0Pricing
System Design Basics for Backend Developers · บทเรียน

การกำหนดรุ่น API และความเข้ากันได้ย้อนหลัง

เรียนรู้กลยุทธ์ในการพัฒนา API โดยไม่ทำให้ไคลเอนต์เดิมใช้งานไม่ได้ รวมถึงรูปแบบการกำหนดรุ่นและกฎความเข้ากันได้

การกำหนดรุ่น API และความเข้ากันได้ย้อนหลัง เป็นบทเรียน System Design Basics for Backend Developers ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน System Design Basics for Backend Developers และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส System Design Basics for Backend Developers มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

Why APIs Must Evolve Carefully

Once an API has clients, you cannot freely change it. Renaming a field or removing an endpoint can break every consumer. Versioning lets you evolve the API while existing clients keep working.

Breaking vs Non-Breaking Changes

Know the difference:

  • Non-breaking: adding a new optional field, adding a new endpoint
  • Breaking: removing a field, renaming a field, changing a type, making an optional field required

Non-breaking changes can ship without a new version; breaking ones cannot.

URI Versioning

The most visible scheme puts the version in the path. It is simple and cache-friendly, and clients can clearly see which version they call.

GET /v1/users/42
GET /v2/users/42

Header Versioning

Alternatively, clients request a version via a header. This keeps URIs clean and treats the version as part of content negotiation.

GET /users/42
Accept: application/vnd.myapp.v2+json

Query Parameter Versioning

A lighter approach uses a query parameter, e.g. ?version=2. It is easy to test in a browser but mixes versioning with regular parameters and can complicate caching.

GET /users/42?version=2

Semantic Versioning

SemVer (MAJOR.MINOR.PATCH) communicates intent:

  • MAJOR: breaking changes
  • MINOR: new backward-compatible features
  • PATCH: backward-compatible fixes

For public HTTP APIs, the MAJOR number usually maps to the URI version.

Additive Change Discipline

The cheapest versioning is not needing a new version. Follow the additive rule: only add, never remove or rename. Clients ignore unknown fields, so adding is safe.

{
  "id": 42,
  "name": "Ada",
  "email": "ada@x.com"
}
// Later, safely add:
{
  "id": 42,
  "name": "Ada",
  "email": "ada@x.com",
  "created_at": "2026-01-01"
}

Deprecation, Not Deletion

When you must retire something, deprecate first. Mark it in docs, send a Deprecation or Sunset header, and give clients a clear timeline before removal.

HTTP/1.1 200 OK
Deprecation: true
Sunset: Wed, 31 Dec 2026 23:59:59 GMT
Link: </v2/users>; rel="successor-version"

Versioning gRPC and GraphQL

It is not just REST. In gRPC, never reuse or renumber protobuf field tags — that breaks the wire format. In GraphQL, the convention is no versions at all: add fields and use the @deprecated directive on old ones.

Supporting Multiple Versions

Running several versions at once has a cost. Strategies include translating old requests to the new internal model, or routing versions to different handlers. Limit how many versions you support and sunset old ones on schedule.

Designing for Change Up Front

Reduce future pain by designing for evolution: prefer objects over bare values so you can add fields, avoid leaking internal enums, and document a clear compatibility contract from day one.

Quick Check

Test your understanding of API versioning.

Recap

You learned how to evolve APIs safely:

  • Distinguish breaking from non-breaking changes
  • URI, header, and query parameter versioning schemes
  • SemVer and the additive-change discipline
  • Deprecate with Sunset headers before deleting
  • gRPC tag stability and GraphQL's deprecation approach

คำถามที่พบบ่อย

บทเรียน “การกำหนดรุ่น API และความเข้ากันได้ย้อนหลัง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การกำหนดรุ่น API และความเข้ากันได้ย้อนหลัง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส System Design Basics for Backend Developers ให้อัปเกรดเป็น CoddyKit PRO คอร์ส System Design Basics for Backend Developers มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การกำหนดรุ่น API และความเข้ากันได้ย้อนหลัง”

เรียนรู้กลยุทธ์ในการพัฒนา API โดยไม่ทำให้ไคลเอนต์เดิมใช้งานไม่ได้ รวมถึงรูปแบบการกำหนดรุ่นและกฎความเข้ากันได้ คุณปฏิบัติ System Design Basics for Backend Developers ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน System Design Basics for Backend Developers หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน System Design Basics for Backend Developers บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การกำหนดรุ่น API และความเข้ากันได้ย้อนหลัง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน System Design Basics for Backend Developers นี้ได้ไหม

ได้ บทเรียน System Design Basics for Backend Developers ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. หลักการออกแบบ RESTful API
  2. GraphQL และ gRPC
  3. คิวข้อความและสถาปัตยกรรมขับเคลื่อนด้วยเหตุการณ์
  4. การกำหนดรุ่น API และความเข้ากันได้ย้อนหลัง
← กลับไปที่ System Design Basics for Backend Developers