0Pricing
C# Academy · บทเรียน

การจัดทำเอกสาร API ที่มีหลายเวอร์ชัน

เปิดเผยเอกสารสำหรับ API หลายเวอร์ชัน

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

หนึ่งเอกสารต่อหนึ่งเวอร์ชัน

เมื่อ API มีหลายเวอร์ชัน โดยทั่วไปคุณควรมี เอกสาร OpenAPI แยกกันสำหรับแต่ละเวอร์ชัน เพื่อให้ผู้ใช้เห็นเฉพาะจุดปลายทางที่เกี่ยวข้องกับตน

// /openapi/v1.json -> only v1 endpoints
// /openapi/v2.json -> only v2 endpoints

ตัวให้บริการคำอธิบายเวอร์ชันของ API

Asp.Versioning เปิดเผย IApiVersionDescriptionProvider ซึ่งแสดงรายการ API ทุกเวอร์ชันที่ค้นพบ คุณวนซ้ำผ่านรายการนี้เพื่อลงทะเบียนเอกสารสำหรับแต่ละเวอร์ชัน

var provider = app.Services
    .GetRequiredService<IApiVersionDescriptionProvider>();

foreach (var desc in provider.ApiVersionDescriptions)
{
    // desc.GroupName is e.g. "v1", "v2"
}

การลงทะเบียนเอกสารต่อหนึ่งเวอร์ชัน

เรียก AddOpenApi หนึ่งครั้งต่อกลุ่มเวอร์ชัน และตั้งชื่อเอกสารแต่ละรายการตามชื่อกลุ่ม

builder.Services
    .AddApiVersioning()
    .AddApiExplorer(o =>
    {
        o.GroupNameFormat = "'v'VVV";
        o.SubstituteApiVersionInUrl = true;
    });

builder.Services.AddOpenApi("v1");
builder.Services.AddOpenApi("v2");

การกรองจุดปลายทางไปยังเอกสารที่ถูกต้อง

ใช้ตัวแปลงเอกสารหรือเพรดิเคต ShouldInclude เพื่อให้เอกสารแต่ละฉบับมีเฉพาะจุดปลายทางของเวอร์ชันนั้น โดยจับคู่ด้วยชื่อกลุ่ม

builder.Services.AddOpenApi("v1", options =>
{
    options.ShouldInclude = description =>
        description.GroupName == "v1";
});

การแมปเอกสาร

MapOpenApi ที่ใช้รูปแบบเริ่มต้นจะให้บริการเอกสารที่มีชื่อทุกฉบับที่ /openapi/{documentName}.json

app.MapOpenApi();
// /openapi/v1.json and /openapi/v2.json both available

การกำหนดข้อมูลเฉพาะเอกสาร

กำหนดชื่อเรื่องและเวอร์ชันของเอกสารแต่ละฉบับเองในตัวแปลง เพื่อให้เอกสารอธิบายตัวเองได้

builder.Services.AddOpenApi("v2", options =>
{
    options.AddDocumentTransformer((doc, ctx, ct) =>
    {
        doc.Info.Title = "Catalog API v2";
        doc.Info.Version = "2.0";
        return Task.CompletedTask;
    });
});

การทำเครื่องหมายเวอร์ชันที่เลิกใช้แล้วในเอกสาร

หากเวอร์ชันใดเลิกใช้แล้ว ให้แสดงข้อมูลนี้ในคำอธิบายเอกสาร เพื่อให้ผู้ใช้เห็นคำเตือนในส่วนติดต่อผู้ใช้

options.AddDocumentTransformer((doc, ctx, ct) =>
{
    if (ctx.DocumentName == "v1")
        doc.Info.Description = "DEPRECATED - migrate to v2.";
    return Task.CompletedTask;
});

การแทนที่เวอร์ชันใน URL

SubstituteApiVersionInUrl = true จะแทนที่โทเค็นเส้นทาง {version:apiVersion} ด้วยเวอร์ชันจริง เช่น v1 ในเอกสาร ทำให้เส้นทางอ่านได้ชัดเจน

// Without: /api/v{version}/products
// With:    /api/v1/products

แท็บส่วนติดต่อผู้ใช้ต่อหนึ่งเวอร์ชัน

โปรแกรมดูส่วนใหญ่สามารถแสดงรายการเอกสารทั้งหมดในเมนูแบบเลื่อนลงได้ ให้กำหนดค่าส่วนติดต่อผู้ใช้ให้ชี้ไปยัง JSON ของแต่ละเวอร์ชัน

app.MapScalarApiReference(options =>
{
    options.AddDocument("v1", "API v1", "/openapi/v1.json");
    options.AddDocument("v2", "API v2", "/openapi/v2.json");
});

การจัดทำเอกสารโครงสร้างคำขอและการตอบกลับ

เนื่องจาก v2 อาจเปลี่ยนออบเจ็กต์ถ่ายโอนข้อมูล ให้กำหนดประเภทออบเจ็กต์ถ่ายโอนข้อมูลแยกกันสำหรับแต่ละเวอร์ชัน จากนั้น OpenAPI จะแสดงสคีมาที่แตกต่างกันของแต่ละเอกสารโดยอัตโนมัติ

// V1 DTO
public record ProductV1(int Id, string Name);
// V2 DTO (breaking change)
public record ProductV2(int Id, string Title, decimal Price);

ประกอบทุกส่วนเข้าด้วยกัน

ลำดับการทำงานทั้งหมดคือ กำหนดค่าการจัดการเวอร์ชันและเครื่องมือสำรวจ API ลงทะเบียนเอกสาร OpenApi หนึ่งฉบับต่อหนึ่งเวอร์ชันพร้อมตัวกรอง แมปเอกสารเหล่านั้น แล้วกำหนดให้ส่วนติดต่อผู้ใช้ชี้ไปยังเอกสารแต่ละฉบับ

builder.Services.AddApiVersioning().AddApiExplorer(o =>
{
    o.GroupNameFormat = "'v'VVV";
    o.SubstituteApiVersionInUrl = true;
});
builder.Services.AddOpenApi("v1");
builder.Services.AddOpenApi("v2");
// ...
app.MapOpenApi();
app.MapScalarApiReference();

ตรวจสอบความเข้าใจ

ยืนยันว่าเอกสารที่มีการจัดการเวอร์ชันถูกสร้างขึ้นอย่างไร

สรุปทบทวน

คุณได้จัดทำเอกสาร API ที่มีการจัดการเวอร์ชันแล้ว:

  • ลงทะเบียนเอกสาร OpenAPI ที่มีชื่อหนึ่งฉบับต่อหนึ่งเวอร์ชันด้วย AddOpenApi("vN")
  • IApiVersionDescriptionProvider แสดงรายการเวอร์ชันทั้งหมด ส่วน ShouldInclude ใช้กรองจุดปลายทาง
  • SubstituteApiVersionInUrl แสดงเส้นทางที่มีเวอร์ชันจริง
  • กำหนดให้ส่วนติดต่อผู้ใช้ชี้ไปยังเอกสารแต่ละฉบับเพื่อให้มีมุมมองแยกตามเวอร์ชัน

เท่านี้ก็จบหลักสูตรการจัดการเวอร์ชันและ OpenAPI

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

บทเรียน “การจัดทำเอกสาร API ที่มีหลายเวอร์ชัน” ฟรีหรือไม่

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

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

เปิดเผยเอกสารสำหรับ API หลายเวอร์ชัน คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่

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

บทเรียน “การจัดทำเอกสาร API ที่มีหลายเวอร์ชัน” ใช้เวลานานแค่ไหน

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

ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม

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

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

  1. กลยุทธ์การกำหนดเวอร์ชัน API
  2. การกำหนดค่า Asp.Versioning
  3. การสร้างเอกสาร OpenAPI
  4. การจัดทำเอกสาร API ที่มีหลายเวอร์ชัน
← กลับไปที่ C# Academy