
เวลาทำเว็บหรือแอปที่ต้องดึงข้อมูลจากที่อื่น เราจะได้ยินคำว่า API บ่อยมาก ปัญหาคือ ถ้าอยากรู้ว่า API ตัวหนึ่งตอบอะไรกลับมา ปกติต้องเขียนโค้ดก่อน ซึ่งสำหรับคนเพิ่งเริ่ม แค่ขั้นนี้ก็ยากแล้ว
Postman คือแอปที่ให้เราส่งคำขอไปหา API ผ่านหน้าจอ กรอก URL กดปุ่ม แล้วดูคำตอบได้ทันที บทความนี้จะพาลองกับ Postman Echo ซึ่งเป็น API ฝึกหัดที่ตอบกลับทุกอย่างที่เราส่งไป ทำให้เห็นชัดว่าเราส่งอะไรออกไปจริงๆ
จบบทความนี้คุณจะ:
- อธิบายได้ว่า API, Request และ Response คืออะไร
- ส่ง GET ครั้งแรก และอ่านผลในส่วน Response ออก
- แนบ query params และส่ง POST พร้อมข้อมูล JSON
- เก็บคำขอไว้ใช้ซ้ำใน Collection
- เขียน Test ให้ Postman ตรวจคำตอบให้อัตโนมัติ
ดูคลิปสั้นสรุปก่อนก็ได้ครับ ยาวแค่ 1 นาที
API คือเคาน์เตอร์สั่งอาหาร
ลองนึกถึงร้านอาหารที่มีเคาน์เตอร์สั่ง เราไม่ได้เดินเข้าไปในครัวเอง ไม่ต้องรู้ว่าวัตถุดิบเก็บไว้ตรงไหน หรือพ่อครัวทำอาหารยังไง แค่สั่งตามเมนูที่เคาน์เตอร์ แล้วรอรับของ

API (Application Programming Interface) ก็คือเคาน์เตอร์นั้น เป็นช่องทางที่ระบบหนึ่งเปิดไว้ให้ระบบอื่นมาขอข้อมูลหรือสั่งงาน โดยไม่ต้องรู้ว่าข้างในทำงานยังไง แอปของเราส่ง Request (ใบสั่ง) ไป แล้วได้ Response (ของที่สั่ง) กลับมา
ส่วน Postman เหมือนเราเดินไปลองสั่งที่เคาน์เตอร์ด้วยตัวเอง เพื่อดูว่าเมนูนี้ได้อะไรกลับมา ก่อนจะเขียนแอปให้สั่งแทนเรา
ศัพท์ที่ต้องรู้
| คำ | เทียบกับ | หน้าที่ |
|---|---|---|
| API | เคาน์เตอร์สั่งอาหาร | ช่องทางที่ระบบเปิดให้คนอื่นมาขอข้อมูล |
| Endpoint | เมนูแต่ละรายการ | URL หนึ่งเส้นที่ทำงานหนึ่งอย่าง เช่น /get |
| Method | วิธีสั่ง | GET ขอดูข้อมูล POST ส่งข้อมูลไปให้ |
| Request | ใบสั่งอาหาร | คำขอที่เราส่งไป |
| Response | ของที่ได้รับ | คำตอบ มีเลขสถานะ Headers และ Body |
| JSON | ใบเสร็จที่เขียนเป็นระเบียบ | รูปแบบข้อมูลแบบ "ชื่อ": ค่า ที่ API นิยมใช้ |
| Collection | แฟ้มเก็บใบสั่ง | ที่รวมคำขอที่บันทึกไว้ใช้ซ้ำ |
ติดตั้ง Postman
Postman ใช้ได้สองแบบ
- แอปบนเครื่อง โหลดได้ที่ postman.com/downloads มีทั้ง Windows, Mac และ Linux แนะนำแบบนี้สำหรับมือใหม่
- เวอร์ชันเว็บ เปิดใช้ในเบราว์เซอร์ได้เลย ต้องสมัครบัญชีฟรีก่อน
ไม่ว่าจะใช้แบบไหน แนะนำให้สมัครบัญชีฟรีแล้วล็อกอินไว้ เพราะขั้นบันทึกคำขอลง Collection ต้องล็อกอินก่อน
ใช้เวอร์ชันเว็บกับ localhost ต้องมี Desktop Agent เบราว์เซอร์มีกฎความปลอดภัย (CORS) ที่จำกัดการส่งคำขอข้ามเว็บ Postman เวอร์ชันเว็บจึงต้องมีตัวช่วยส่งคำขอแทน เรียกว่า Agent ถ้าจะยิงไปหา
localhost(เซิร์ฟเวอร์ที่รันบนเครื่องเราเอง) ต้องติดตั้ง Postman Desktop Agent เพิ่ม เพราะตัวที่ส่งผ่านคลาวด์ของ Postman มองไม่เห็นเครื่องเรา หรือใช้แอปบนเครื่องไปเลยก็ไม่ต้องกังวลเรื่องนี้
เช็กว่าได้แล้ว: เปิด Postman แล้วเห็นแถบด้านซ้ายที่มีหัวข้อ Collections และพื้นที่ทำงานตรงกลาง
ยิง GET ครั้งแรก
เริ่มจากคำขอที่ง่ายที่สุด คือขอดูข้อมูลด้วย GET
- กดปุ่ม + (Add) ด้านบนพื้นที่ทำงาน เพื่อเปิดแท็บคำขอใหม่
- ดูช่องหน้า URL ว่าเป็น
GET(เป็นค่าเริ่มต้นอยู่แล้ว) - พิมพ์ URL นี้ลงในช่อง
- กด Send
https://postman-echo.com/get
คำตอบจะขึ้นในส่วน Response ครึ่งล่างของหน้าจอ มุมขวาจะมีข้อมูลสามอย่าง
- Status เลขสถานะ ควรขึ้น
200 OKสีเขียว แปลว่าสำเร็จ - Time เวลาที่ใช้ตั้งแต่ส่งจนได้คำตอบ หน่วยเป็นมิลลิวินาที (ms)
- Size ขนาดของคำตอบ
เอาเมาส์ไปชี้ที่แต่ละตัวจะมีรายละเอียดเพิ่ม เช่น ชี้ที่ Time จะเห็นว่าเวลาหมดไปกับขั้นไหนบ้าง
ส่วนแท็บ Body คือเนื้อหาของคำตอบ ซึ่งเป็น JSON หน้าตาประมาณนี้
{
"args": {},
"headers": {
"host": "postman-echo.com",
"accept": "*/*",
"user-agent": "PostmanRuntime/..."
},
"url": "https://postman-echo.com/get"
}argsค่าที่แนบมาท้าย URL หลังเครื่องหมาย?ตอนนี้ยังว่าง เพราะเรายังไม่ได้แนบอะไรheadersHeaders ที่ Postman ส่งไปกับคำขอ echo สะท้อนกลับมาให้ดู สังเกตuser-agentที่บอกว่าคนส่งคือ PostmanRuntime ตามด้วยเลขเวอร์ชัน ถ้ายิงจากเบราว์เซอร์ ค่านี้จะเป็นชื่อเบราว์เซอร์แทนurlURL ที่เซิร์ฟเวอร์ได้รับจริง
เช็กว่าได้แล้ว: ส่วน Response ขึ้น 200 OK และใน Body มี "url": "https://postman-echo.com/get"
พิมพ์ https:// ให้ครบเสมอ ถ้าพิมพ์แค่
postman-echo.com/getPostman จะถือว่าเป็นhttp://ซึ่ง echo ยังตอบได้ แต่ API จริงส่วนใหญ่บังคับใช้https://นิสัยพิมพ์ให้ครบจะช่วยตัดปัญหาแปลกๆ ไปได้เยอะ
แนบค่าไปกับ URL ด้วย query params
Query params คือค่าที่แนบไปท้าย URL เพื่อบอกรายละเอียดเพิ่ม เหมือนเขียนหมายเหตุท้ายใบสั่งว่า "หวานน้อย" รูปแบบคือ ? ตามด้วย ชื่อ=ค่า และถ้ามีหลายค่าให้คั่นด้วย &
แก้ URL เดิมเป็นแบบนี้แล้วกด Send
https://postman-echo.com/get?name=devkubสังเกตแท็บ Params ใต้ช่อง URL จะมีแถว name กับ devkub ขึ้นมาเอง เพราะ Postman แยก URL ให้อัตโนมัติ ลองเพิ่มแถวใหม่ในตารางนั้น ใส่ชื่อ drink ค่า latte แล้ว URL ด้านบนจะต่อ &drink=latte ให้เอง แก้ที่ไหนก็ได้ อีกฝั่งเปลี่ยนตาม
{
"args": {
"name": "devkub",
"drink": "latte"
}
}เช็กว่าได้แล้ว: args ในคำตอบมีทั้ง name และ drink ตรงกับที่เราส่งไป
ส่ง POST พร้อม JSON
GET ใช้ขอดูข้อมูล ส่วนถ้าจะ ส่ง ข้อมูลไปให้เซิร์ฟเวอร์ เช่น สมัครสมาชิกหรือสั่งซื้อของ จะใช้ POST และใส่ข้อมูลไว้ใน Body ของคำขอ แทนการแปะท้าย URL เหมือนกรอกแบบฟอร์มสั่งของแล้วยื่นให้พนักงาน
- กด + เปิดแท็บใหม่ แล้วเปลี่ยน Method จาก
GETเป็นPOST - ใส่ URL
https://postman-echo.com/post - ไปที่แท็บ Body เลือก raw แล้วเปลี่ยนตัวเลือกด้านข้าง (ค่าเริ่มต้นคือ Text) เป็น JSON
- พิมพ์ข้อมูลนี้ลงในช่อง แล้วกด Send
{
"drink": "latte",
"qty": 2
}echo จะตอบกลับโดยแนบสิ่งที่เราส่งไปมาให้ดู
{
"data": {
"drink": "latte",
"qty": 2
},
"headers": {
"content-type": "application/json"
},
"json": {
"drink": "latte",
"qty": 2
},
"url": "https://postman-echo.com/post"
}jsonคือข้อมูลที่เซิร์ฟเวอร์อ่านออกมาเป็น JSON ได้สำเร็จ ตรงกับที่เราพิมพ์ไปheaders.content-typeเป็นapplication/jsonเพราะตอนเราเลือก JSON Postman ใส่ Header นี้ให้เอง เพื่อบอกเซิร์ฟเวอร์ว่าข้อมูลที่ส่งไปเป็น JSON
เช็กว่าได้แล้ว: ได้ 200 OK และ json ในคำตอบมี "drink": "latte" กับ "qty": 2
ระวัง JSON ผิดรูปแบบ ชื่อและข้อความใน JSON ต้องอยู่ในเครื่องหมายคำพูดคู่
"และห้ามมี,เกินหลังตัวสุดท้าย ถ้าพิมพ์ผิด หรือลืมเลือก JSON echo จะตอบ"json": nullเพราะอ่านไม่ออก ส่วน API จริงหลายตัวจะตอบ400 Bad Request
เก็บไว้ใน Collection
ถ้าต้องพิมพ์ URL ใหม่ทุกครั้งคงไม่ไหว Collection คือแฟ้มที่เก็บคำขอไว้ใช้ซ้ำ จัดเป็นหมวด และแชร์ให้ทีมได้
- กลับไปที่แท็บ GET ที่มี
?name=devkubแล้วกด Save (หรือ Ctrl+S บน Mac ใช้ Cmd+S) - ตั้งชื่อคำขอ เช่น
Echo GET - กด New Collection แล้วตั้งชื่อแฟ้ม เช่น
DevKub ลองยิง API - กด Save
ทำแบบเดียวกันกับแท็บ POST โดยเลือกบันทึกลงแฟ้มเดิม
เช็กว่าได้แล้ว: แถบ Collections ด้านซ้ายมีแฟ้ม DevKub ลองยิง API และข้างในมีคำขอที่เพิ่งบันทึก คลิกที่ชื่อเมื่อไหร่ก็เปิดกลับมายิงซ้ำได้ทันที
เขียน Test แรก
ตอนนี้เราอ่านคำตอบด้วยตาทุกครั้ง ถ้ามีคำขอสิบตัวคงเหนื่อย Test คือโค้ดสั้นๆ ที่ Postman รันให้หลังได้คำตอบ แล้วบอกว่าผ่านหรือไม่ผ่าน เหมือนเช็กลิสต์ตรวจของตอนรับอาหาร ว่าได้ครบตามที่สั่งไหม
- เปิดคำขอ
Echo GETที่บันทึกไว้ - ไปที่แท็บ Scripts แล้วเลือก Post-response (สคริปต์ที่รันหลังได้คำตอบ)
- กดไอคอน Snippets มุมขวาล่างของช่องเขียนโค้ด แล้วเลือก Status code: Code is 200
Postman จะเติมโค้ดนี้ให้
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});pmคือตัวช่วยของ Postman ที่ให้เราเข้าถึงคำขอและคำตอบpm.test("ชื่อ", function () { ... })สร้าง Test หนึ่งข้อ ชื่อจะขึ้นในผลการตรวจpm.response.to.have.status(200)อ่านเหมือนภาษาอังกฤษเลยครับ "คำตอบต้องมีเลขสถานะ 200"
ต่อด้วย Test ข้อที่สอง ที่เข้าไปอ่านข้อมูลใน JSON พิมพ์เพิ่มต่อจากข้อแรก
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
pm.test("name ใน args ต้องเป็น devkub", function () {
pm.expect(pm.response.json().args.name).to.eql("devkub");
});pm.response.json()แปลง Body ของคำตอบเป็นข้อมูลที่โค้ดใช้ได้.args.nameเดินเข้าไปหยิบค่าnameที่อยู่ในargspm.expect(ค่า).to.eql("devkub")คาดหวังว่าค่านั้นต้องเท่ากับ"devkub"
กด Send แล้วเปิดแท็บ Test Results ในส่วน Response หัวแท็บจะบอกจำนวนข้อที่ผ่านจากทั้งหมด
เช็กว่าได้แล้ว: Test Results บอกว่าผ่าน 2 จาก 2 ข้อ
ลองทำให้ไม่ผ่านดูครับ แก้ URL เป็น ?name=devkub2 แล้วกด Send ข้อสองจะไม่ผ่าน พร้อมข้อความบอกว่าคาดหวัง devkub แต่ได้ devkub2 นี่แหละประโยชน์ของ Test พอ API เปลี่ยนพฤติกรรมเมื่อไหร่ เรารู้ทันที ไม่ต้องรอผู้ใช้มาบอก เสร็จแล้วแก้กลับเป็น devkub แล้วกด Save อีกครั้ง เพื่อเก็บ Test ไว้กับคำขอ
เจอปัญหา ลองเช็กตามนี้
| อาการ | สาเหตุ | วิธีแก้ |
|---|---|---|
ได้ 404 Not Found | URL สะกดผิด เช่น /gte | เช็ก URL ทีละตัวอักษร |
Could not send request | ไม่มีเน็ต หรือชื่อเว็บผิด | เช็กเน็ต แล้วดู URL อีกรอบ |
ยิง localhost จากเวอร์ชันเว็บไม่ได้ | Agent บนคลาวด์มองไม่เห็นเครื่องเรา | ติดตั้ง Desktop Agent หรือใช้แอปบนเครื่อง |
ยิง localhost แล้วขึ้น ECONNREFUSED | เซิร์ฟเวอร์บนเครื่องยังไม่รัน หรือพอร์ตผิด | รันเซิร์ฟเวอร์ก่อน แล้วเช็กเลขพอร์ต |
json ในคำตอบเป็น null | JSON ผิดรูปแบบ หรือไม่ได้เลือก JSON | เช็ก " กับ , แล้วเลือก raw เป็น JSON |
| Test ไม่ผ่าน | ค่าที่ได้ไม่ตรงกับที่คาด | อ่านข้อความใน Test Results ว่าคาดอะไร ได้อะไร |
ไปต่อ
- อยากรู้ว่าเลข 200, 404, 500 ที่ขึ้นใน Postman แปลว่าอะไร และเจอแล้วควรทำอะไรต่อ อ่านต่อได้ที่ HTTP Status Code คืออะไร?
- คู่มือ Postman ฉบับเต็มอยู่ที่ Postman Docs และรายการ Endpoint ทั้งหมดของ echo อยู่ที่ Postman Echo
สรุป
- API คือเคาน์เตอร์ที่ระบบเปิดไว้ให้คนอื่นมาขอข้อมูล เราส่ง Request ไปแล้วได้ Response กลับมา
- Postman ให้เราส่งคำขอผ่านหน้าจอ ใส่ URL กด Send แล้วดู Status, Time, Size และ Body ได้ทันที
GETใช้ขอดู แนบค่าเพิ่มด้วย query params ส่วนPOSTส่งข้อมูลไปใน Body เป็น JSON- บันทึกคำขอไว้ใน Collection เพื่อใช้ซ้ำและแชร์ให้ทีม
- Test ใน Scripts > Post-response ช่วยตรวจคำตอบให้อัตโนมัติ ดูผลได้ที่ Test Results
พร้อมแล้วก็ไปทำ Quiz ท้ายบทด้านล่างเพื่อรับ XP ได้เลยครับ