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]
ทั้งสองเรื่องนี้เกี่ยวข้องกัน: caching ขึ้นอยู่กับ representation ที่เสถียร, และ versioning เป็นตัวกำหนดว่า representation เหล่านั้นจะมีหน้าตาเป็นอย่างไรเมื่อเวลาผ่านไป
โมดูลนี้ครอบคลุมอะไรบ้าง
หัวข้อที่มีชื่อว่า “โมดูลนี้ครอบคลุมอะไรบ้าง”- Versioning strategies — versioning แบบ URI, header, และ media-type
- Content negotiation — การเลือก representation ด้วย
Accept - Caching และ ETags —
Cache-Control, validator, และ304 Not Modified - Conditional requests และ idempotency keys — การเขียนและการ retry ที่ปลอดภัย