HTTP method ระบุ เจตนา ของคุณต่อ resource; status code คือคำตอบที่เข้ารหัสของเซิร์ฟเวอร์ สองคุณสมบัติสำคัญสำหรับ method: safe (อ่านอย่างเดียว, ไม่มี side effect) และ idempotent (ทำซ้ำแล้วได้ผลเดิม — สำคัญสำหรับการ retry อย่างปลอดภัย)
HTTP method ระบุ เจตนา ของคุณต่อ resource; status code คือคำตอบที่เข้ารหัสของเซิร์ฟเวอร์ สองคุณสมบัติสำคัญสำหรับ method: safe (อ่านอย่างเดียว, ไม่มี side effect) และ idempotent (ทำซ้ำแล้วได้ผลเดิม — สำคัญสำหรับการ retry อย่างปลอดภัย)
| Method | จุดประสงค์ | Safe | Idempotent |
|---|
| GET | อ่าน resource | Yes | Yes |
| POST | สร้าง / กระตุ้นการกระทำ | No | No |
| PUT | แทนที่ resource | No | Yes |
| PATCH | อัปเดตบางส่วน | No | No* |
| DELETE | ลบ resource | No | Yes |
| HEAD | เหมือน GET แต่เฉพาะ header | Yes | Yes |
การแยกแยะ idempotency เป็นเรื่องเชิงปฏิบัติ: เพราะ PUT และ DELETE เป็น idempotent client จึง retry มันได้อย่างปลอดภัยหลัง timeout; การ retry POST ที่ไม่ใช่ idempotent เสี่ยงสร้างของซ้ำ (บั๊กคิดเงินซ้ำสองครั้งอันคลาสสิก)
Status code ถูกจัดกลุ่มตามหลักตัวแรก:
1xx Informational request received, continuing (100 Continue, 101 Switching)
2xx Success it worked (200 OK, 201 Created, 204 No Content)
3xx Redirection go elsewhere (301 Moved, 304 Not Modified)
4xx Client error YOUR request is wrong (400, 401, 403, 404, 429)
5xx Server error the SERVER failed (500, 502, 503, 504)
เส้นที่สำคัญที่สุดคือการแบ่ง 4xx กับ 5xx: 4xx หมายถึง client ส่งอะไรผิด (input ไม่ดี, ไม่ได้ยืนยันตัว, ไม่พบ) — retry แบบเดิมไม่ช่วย; 5xx หมายถึง server ล้มเหลว — retry (พร้อม backoff) อาจสำเร็จ จงรู้จักตัวที่ใช้ทุกวันให้ขึ้นใจ: 401 (ไม่ได้ยืนยันตัว) เทียบกับ 403 (ยืนยันตัวแล้วแต่ไม่ได้รับอนุญาต), 404 (ไม่พบ), 429 (ถูกจำกัดอัตรา), 500 (server crash ทั่วไป), 502/503/504 (bad gateway / ไม่พร้อมใช้งาน / gateway timeout — มักเป็นปัญหา upstream หรือโหลดเกิน)
code เหล่านี้เป็นสัญญาร่วมระหว่างทุก client และ server ดังนั้นความคล่องแคล่วในเรื่องนี้จึงเป็นสิ่งที่คาดหวังจากทุกคนที่สร้างหรือใช้ API ผู้สัมภาษณ์หยั่งดู ความแตกต่าง ที่เผยความเข้าใจจริง: 401 เทียบกับ 403, PUT เทียบกับ PATCH และโดยเฉพาะ idempotency ซึ่งกำหนดโดยตรงว่าการ retry ปลอดภัยหรือไม่ — ความกังวลหลักในระบบกระจายและ flow การชำระเงิน การส่งคืน status code ที่ถูกต้องยังทำให้ API ของคุณคาดเดาได้และถูกจัดการอย่างถูกต้องโดย cache, proxy และไลบรารี client ดังนั้นความรู้นี้จึงหล่อหลอมการออกแบบ API ที่ดี ไม่ใช่เพียงเรื่องหยุมหยิม
คลังคำถามสัมภาษณ์งาน IT พร้อมคำตอบโดยละเอียด — ตั้งแต่ระดับ Junior ถึง Senior
บริจาค