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

Versioning และ Caching

API ที่อยู่ได้นานถูกกำหนดรูปร่างด้วยสองแรง: ต้อง เปลี่ยนแปลง ได้โดยไม่ทำให้ client ที่ใช้งานอยู่พัง และต้อง เร็ว คือไม่ทำงานซ้ำในสิ่งที่เคยทำไปแล้ว เรื่องแรกเป็นหน้าที่ของ versioning ส่วนเรื่องที่สองเป็นหน้าที่ของ HTTP caching

flowchart TD
  API --> V[Versioning: evolve safely]
  API --> Cn[Content negotiation: pick a representation]
  API --> Ca[Caching: avoid repeating work]
  V --> V1[URI / header / media-type]
  Ca --> Ca1[Cache-Control + ETag + conditional requests]
พัฒนา contract และให้บริการอย่างมีประสิทธิภาพ

ทั้งสองเรื่องนี้เกี่ยวข้องกัน: caching ขึ้นอยู่กับ representation ที่เสถียร, และ versioning เป็นตัวกำหนดว่า representation เหล่านั้นจะมีหน้าตาเป็นอย่างไรเมื่อเวลาผ่านไป

  • Versioning strategies — versioning แบบ URI, header, และ media-type
  • Content negotiation — การเลือก representation ด้วย Accept
  • Caching และ ETagsCache-Control, validator, และ 304 Not Modified
  • Conditional requests และ idempotency keys — การเขียนและการ retry ที่ปลอดภัย
การเปลี่ยนแปลงแบบใดที่มักจะไม่ต้องการ API เวอร์ชันใหม่?
HTTP caching ช่วย API เป็นหลักในด้านใด?