ข้ามไปยังเนื้อหา

พื้นฐาน HTTP และ REST

โดยแก่นแท้แล้ว REST API คือชุดของ resource ที่เราโต้ตอบด้วยผ่าน HTTP ก่อนจะลงมือออกแบบ ควรทำความเข้าใจสองเรื่องนี้ให้ชัดก่อน นั่นคือ ข้อความ HTTP ไหลเวียนระหว่าง client กับ server อย่างไรจริง ๆ และคำว่า “RESTful” นั้นผูกมัดเราไว้กับอะไรกันแน่

ทุกการโต้ตอบคือ client ส่ง request ออกไปและ server ส่ง response กลับมา request จะระบุ method และ path ส่วน server จะทำงานบางอย่างแล้วตอบกลับด้วย status code และ (โดยปกติ) body

sequenceDiagram
  participant C as Client
  participant S as API Server
  C->>S: GET /articles/42
  S->>S: look up resource
  S-->>C: 200 OK + JSON body
หนึ่ง request หนึ่ง response — server ไม่เก็บ state ของ client ไว้ระหว่างทั้งสอง

การไป-กลับแบบ stateless นี้คือหน่วยพื้นฐานของทุกอย่างที่จะตามมา API ที่ออกแบบมาดีจะทำให้แต่ละ request อธิบายตัวเองได้ครบถ้วน method บอกว่าเราต้องการทำอะไร path บอกว่าทำกับอะไร และ status code บอกว่าผลเป็นอย่างไร

คอร์สนี้สร้างการออกแบบ REST API ตั้งแต่พื้นฐาน พร้อมตัวอย่าง TypeScript ที่รันได้จริง:

  • พื้นฐาน HTTP และ REST — ข้อความ, method, status code และข้อจำกัดของ REST (คุณอยู่ที่นี่)
  • การออกแบบ Resource และ URI — จำลอง resource และตั้งชื่อ URI ให้กับ resource เหล่านั้น
  • Method, CRUD และ Idempotency — การจับคู่ operation เข้ากับ method อย่างปลอดภัย
  • Status Code และ Error — การเลือก code และการออกแบบ body ของ error
  • การสืบค้น Collection — pagination, filtering, sorting, การเลือก field
  • Versioning และ Caching — พัฒนา API ให้เติบโตต่อได้และเร่งความเร็ว
  • Security — authentication, authorization, CORS และ rate limiting
  • เอกสาร, การทดสอบ และการสร้าง — OpenAPI, การทดสอบ และ implementation ที่ใช้งานได้จริง
ใน API แบบ stateless นั้น state ของ session ต่อ client ถูกเก็บไว้ที่ไหนระหว่าง request?
สามสิ่งใดที่ทำให้ HTTP request หนึ่ง ๆ อธิบายตัวเองได้?