หน้าแรก / บทความ / เครื่องมือ

Postman คืออะไร? ยิง API ครั้งแรกโดยไม่ต้องเขียนโค้ด

เข้าใจ API ผ่านภาพเคาน์เตอร์สั่งอาหาร แล้วลองยิงคำขอแรกด้วย Postman ตั้งแต่ GET, query params, POST พร้อม JSON ไปจนถึงเก็บลง Collection และเขียน Test ให้ตรวจคำตอบอัตโนมัติ

เวลาทำเว็บหรือแอปที่ต้องดึงข้อมูลจากที่อื่น เราจะได้ยินคำว่า API บ่อยมาก ปัญหาคือ ถ้าอยากรู้ว่า API ตัวหนึ่งตอบอะไรกลับมา ปกติต้องเขียนโค้ดก่อน ซึ่งสำหรับคนเพิ่งเริ่ม แค่ขั้นนี้ก็ยากแล้ว

Postman คือแอปที่ให้เราส่งคำขอไปหา API ผ่านหน้าจอ กรอก URL กดปุ่ม แล้วดูคำตอบได้ทันที บทความนี้จะพาลองกับ Postman Echo ซึ่งเป็น API ฝึกหัดที่ตอบกลับทุกอย่างที่เราส่งไป ทำให้เห็นชัดว่าเราส่งอะไรออกไปจริงๆ

จบบทความนี้คุณจะ:

  • อธิบายได้ว่า API, Request และ Response คืออะไร
  • ส่ง GET ครั้งแรก และอ่านผลในส่วน Response ออก
  • แนบ query params และส่ง POST พร้อมข้อมูล JSON
  • เก็บคำขอไว้ใช้ซ้ำใน Collection
  • เขียน Test ให้ Postman ตรวจคำตอบให้อัตโนมัติ

ดูคลิปสั้นสรุปก่อนก็ได้ครับ ยาวแค่ 1 นาที

ดูคลิปนี้บน YouTube

API คือเคาน์เตอร์สั่งอาหาร

ลองนึกถึงร้านอาหารที่มีเคาน์เตอร์สั่ง เราไม่ได้เดินเข้าไปในครัวเอง ไม่ต้องรู้ว่าวัตถุดิบเก็บไว้ตรงไหน หรือพ่อครัวทำอาหารยังไง แค่สั่งตามเมนูที่เคาน์เตอร์ แล้วรอรับของ

แอปของเราส่ง Request ไปที่ API เหมือนสั่งอาหารที่เคาน์เตอร์ แล้วได้ Response กลับมา
เราคุยกับเคาน์เตอร์ ไม่ต้องเข้าไปในครัว

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

  1. กดปุ่ม + (Add) ด้านบนพื้นที่ทำงาน เพื่อเปิดแท็บคำขอใหม่
  2. ดูช่องหน้า URL ว่าเป็น GET (เป็นค่าเริ่มต้นอยู่แล้ว)
  3. พิมพ์ URL นี้ลงในช่อง
  4. กด Send
URL
https://postman-echo.com/get
หน้าจอ Postman แบ่งเป็นส่วน Request ด้านบน และส่วน Response ด้านล่าง
ครึ่งบนคือสิ่งที่เราส่ง ครึ่งล่างคือสิ่งที่ได้กลับมา

คำตอบจะขึ้นในส่วน Response ครึ่งล่างของหน้าจอ มุมขวาจะมีข้อมูลสามอย่าง

  • Status เลขสถานะ ควรขึ้น 200 OK สีเขียว แปลว่าสำเร็จ
  • Time เวลาที่ใช้ตั้งแต่ส่งจนได้คำตอบ หน่วยเป็นมิลลิวินาที (ms)
  • Size ขนาดของคำตอบ

เอาเมาส์ไปชี้ที่แต่ละตัวจะมีรายละเอียดเพิ่ม เช่น ชี้ที่ Time จะเห็นว่าเวลาหมดไปกับขั้นไหนบ้าง

ส่วนแท็บ Body คือเนื้อหาของคำตอบ ซึ่งเป็น JSON หน้าตาประมาณนี้

Body ที่ได้กลับมา (ตัดมาบางส่วน)
{
  "args": {},
  "headers": {
    "host": "postman-echo.com",
    "accept": "*/*",
    "user-agent": "PostmanRuntime/..."
  },
  "url": "https://postman-echo.com/get"
}
  • args ค่าที่แนบมาท้าย URL หลังเครื่องหมาย ? ตอนนี้ยังว่าง เพราะเรายังไม่ได้แนบอะไร
  • headers Headers ที่ Postman ส่งไปกับคำขอ echo สะท้อนกลับมาให้ดู สังเกต user-agent ที่บอกว่าคนส่งคือ PostmanRuntime ตามด้วยเลขเวอร์ชัน ถ้ายิงจากเบราว์เซอร์ ค่านี้จะเป็นชื่อเบราว์เซอร์แทน
  • url URL ที่เซิร์ฟเวอร์ได้รับจริง

เช็กว่าได้แล้ว: ส่วน Response ขึ้น 200 OK และใน Body มี "url": "https://postman-echo.com/get"

พิมพ์ https:// ให้ครบเสมอ ถ้าพิมพ์แค่ postman-echo.com/get Postman จะถือว่าเป็น http:// ซึ่ง echo ยังตอบได้ แต่ API จริงส่วนใหญ่บังคับใช้ https:// นิสัยพิมพ์ให้ครบจะช่วยตัดปัญหาแปลกๆ ไปได้เยอะ

แนบค่าไปกับ URL ด้วย query params

Query params คือค่าที่แนบไปท้าย URL เพื่อบอกรายละเอียดเพิ่ม เหมือนเขียนหมายเหตุท้ายใบสั่งว่า "หวานน้อย" รูปแบบคือ ? ตามด้วย ชื่อ=ค่า และถ้ามีหลายค่าให้คั่นด้วย &

แก้ URL เดิมเป็นแบบนี้แล้วกด Send

URL
https://postman-echo.com/get?name=devkub

สังเกตแท็บ Params ใต้ช่อง URL จะมีแถว name กับ devkub ขึ้นมาเอง เพราะ Postman แยก URL ให้อัตโนมัติ ลองเพิ่มแถวใหม่ในตารางนั้น ใส่ชื่อ drink ค่า latte แล้ว URL ด้านบนจะต่อ &drink=latte ให้เอง แก้ที่ไหนก็ได้ อีกฝั่งเปลี่ยนตาม

args ใน Body ที่ได้กลับมา
{
  "args": {
    "name": "devkub",
    "drink": "latte"
  }
}

เช็กว่าได้แล้ว: args ในคำตอบมีทั้ง name และ drink ตรงกับที่เราส่งไป

ส่ง POST พร้อม JSON

GET ใช้ขอดูข้อมูล ส่วนถ้าจะ ส่ง ข้อมูลไปให้เซิร์ฟเวอร์ เช่น สมัครสมาชิกหรือสั่งซื้อของ จะใช้ POST และใส่ข้อมูลไว้ใน Body ของคำขอ แทนการแปะท้าย URL เหมือนกรอกแบบฟอร์มสั่งของแล้วยื่นให้พนักงาน

  1. กด + เปิดแท็บใหม่ แล้วเปลี่ยน Method จาก GET เป็น POST
  2. ใส่ URL https://postman-echo.com/post
  3. ไปที่แท็บ Body เลือก raw แล้วเปลี่ยนตัวเลือกด้านข้าง (ค่าเริ่มต้นคือ Text) เป็น JSON
  4. พิมพ์ข้อมูลนี้ลงในช่อง แล้วกด Send
Body ของคำขอ (raw, JSON)
{
  "drink": "latte",
  "qty": 2
}

echo จะตอบกลับโดยแนบสิ่งที่เราส่งไปมาให้ดู

Body ที่ได้กลับมา (ตัดมาบางส่วน)
{
  "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 คือแฟ้มที่เก็บคำขอไว้ใช้ซ้ำ จัดเป็นหมวด และแชร์ให้ทีมได้

  1. กลับไปที่แท็บ GET ที่มี ?name=devkub แล้วกด Save (หรือ Ctrl+S บน Mac ใช้ Cmd+S)
  2. ตั้งชื่อคำขอ เช่น Echo GET
  3. กด New Collection แล้วตั้งชื่อแฟ้ม เช่น DevKub ลองยิง API
  4. กด Save

ทำแบบเดียวกันกับแท็บ POST โดยเลือกบันทึกลงแฟ้มเดิม

เช็กว่าได้แล้ว: แถบ Collections ด้านซ้ายมีแฟ้ม DevKub ลองยิง API และข้างในมีคำขอที่เพิ่งบันทึก คลิกที่ชื่อเมื่อไหร่ก็เปิดกลับมายิงซ้ำได้ทันที

เขียน Test แรก

ตอนนี้เราอ่านคำตอบด้วยตาทุกครั้ง ถ้ามีคำขอสิบตัวคงเหนื่อย Test คือโค้ดสั้นๆ ที่ Postman รันให้หลังได้คำตอบ แล้วบอกว่าผ่านหรือไม่ผ่าน เหมือนเช็กลิสต์ตรวจของตอนรับอาหาร ว่าได้ครบตามที่สั่งไหม

  1. เปิดคำขอ Echo GET ที่บันทึกไว้
  2. ไปที่แท็บ Scripts แล้วเลือก Post-response (สคริปต์ที่รันหลังได้คำตอบ)
  3. กดไอคอน Snippets มุมขวาล่างของช่องเขียนโค้ด แล้วเลือก Status code: Code is 200

Postman จะเติมโค้ดนี้ให้

Scripts > Post-response
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 พิมพ์เพิ่มต่อจากข้อแรก

Scripts > Post-response
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 ที่อยู่ใน args
  • pm.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 FoundURL สะกดผิด เช่น /gteเช็ก URL ทีละตัวอักษร
Could not send requestไม่มีเน็ต หรือชื่อเว็บผิดเช็กเน็ต แล้วดู URL อีกรอบ
ยิง localhost จากเวอร์ชันเว็บไม่ได้Agent บนคลาวด์มองไม่เห็นเครื่องเราติดตั้ง Desktop Agent หรือใช้แอปบนเครื่อง
ยิง localhost แล้วขึ้น ECONNREFUSEDเซิร์ฟเวอร์บนเครื่องยังไม่รัน หรือพอร์ตผิดรันเซิร์ฟเวอร์ก่อน แล้วเช็กเลขพอร์ต
json ในคำตอบเป็น nullJSON ผิดรูปแบบ หรือไม่ได้เลือก 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 ได้เลยครับ

Quiz ท้ายบท

5 ข้อ · ข้อละ 10 XP

ทดสอบความเข้าใจเรื่อง Postman ตอบถูกข้อละ 10 XP

  • 5 ข้อ
  • ไม่จับเวลา
  • เฉลยทันทีทุกข้อ