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

การกำหนดค่า Asp.Versioning

ตั้งค่าการกำหนดเวอร์ชันใน ASP.NET Core

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

แพ็กเกจ Asp.Versioning

การทำเวอร์ชันของ API ใน ASP.NET Core อยู่ในแพ็กเกจ Asp.Versioning ที่ชุมชนดูแล ซึ่งเป็นผู้สืบทอดของ Microsoft.AspNetCore.Mvc.Versioning

dotnet add package Asp.Versioning.Mvc
dotnet add package Asp.Versioning.Mvc.ApiExplorer

AddApiVersioning

ลงทะเบียนการทำเวอร์ชันด้วย AddApiVersioning ตัวเลือกต่าง ๆ จะควบคุมเวอร์ชันเริ่มต้นและวิธีจัดการกับเวอร์ชันที่ขาดหายไป

builder.Services.AddApiVersioning(options =>
{
    options.DefaultApiVersion = new ApiVersion(1, 0);
    options.AssumeDefaultVersionWhenUnspecified = true;
    options.ReportApiVersions = true;
});

ReportApiVersions

ReportApiVersions = true จะเพิ่มส่วนหัวการตอบกลับ api-supported-versions และ api-deprecated-versions เพื่อให้ไคลเอ็นต์ค้นพบว่ามีเวอร์ชันใดให้ใช้งานบ้าง

// Response headers:
// api-supported-versions: 1.0, 2.0
// api-deprecated-versions: 1.0

การเลือกตัวอ่านเวอร์ชัน

ApiVersionReader จะกำหนดว่าจะอ่านเวอร์ชันจากที่ใด UrlSegmentApiVersionReader จะอ่านเวอร์ชันจากเส้นทางของเส้นทาง

options.ApiVersionReader = new UrlSegmentApiVersionReader();

การรวมตัวอ่าน

ยอมรับเวอร์ชันจากหลายตำแหน่งพร้อมกันด้วย ApiVersionReader.Combine

options.ApiVersionReader = ApiVersionReader.Combine(
    new UrlSegmentApiVersionReader(),
    new HeaderApiVersionReader("X-Api-Version"),
    new QueryStringApiVersionReader("api-version"));

การเพิ่มเครื่องมือสำรวจ API

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

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

การจัดการเวอร์ชันของตัวควบคุม

ใส่คำอธิบายประกอบให้ตัวควบคุมด้วย [ApiVersion] และใส่ตัวยึดเวอร์ชันไว้ในแม่แบบเส้นทาง

[ApiVersion(1.0)]
[Route("api/v{version:apiVersion}/products")]
public class ProductsV1Controller : ControllerBase
{
    [HttpGet]
    public IActionResult Get() => Ok(new { version = "1.0" });
}

เวอร์ชันที่สอง

ตัวควบคุมแยกต่างหากให้บริการ v2 บนแม่แบบเส้นทางเดียวกัน ส่วน {version:apiVersion} จะกำหนดเส้นทางของคำขอไปยังตัวควบคุมที่ถูกต้อง

[ApiVersion(2.0)]
[Route("api/v{version:apiVersion}/products")]
public class ProductsV2Controller : ControllerBase
{
    [HttpGet]
    public IActionResult Get() =>
        Ok(new { version = "2.0", extra = true });
}

หลายเวอร์ชันในตัวควบคุมเดียว

ตัวควบคุมเดียวสามารถให้บริการได้หลายเวอร์ชัน โดยกำหนดการทำงานแต่ละรายการด้วย [MapToApiVersion]

[ApiVersion(1.0)]
[ApiVersion(2.0)]
[Route("api/v{version:apiVersion}/orders")]
public class OrdersController : ControllerBase
{
    [HttpGet, MapToApiVersion(1.0)]
    public IActionResult GetV1() => Ok("v1");

    [HttpGet, MapToApiVersion(2.0)]
    public IActionResult GetV2() => Ok("v2");
}

การเลิกใช้เวอร์ชัน

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

[ApiVersion(1.0, Deprecated = true)]
[ApiVersion(2.0)]
[Route("api/v{version:apiVersion}/products")]
public class ProductsController : ControllerBase { }

การจัดการเวอร์ชันของ Minimal API

Minimal API ใช้ ชุดเวอร์ชัน ที่สร้างด้วย NewApiVersionSet จากนั้นจึงผูกเวอร์ชันกับจุดปลายทางแต่ละรายการ

var versionSet = app.NewApiVersionSet()
    .HasApiVersion(new ApiVersion(1, 0))
    .HasApiVersion(new ApiVersion(2, 0))
    .Build();

app.MapGet("/api/v{version:apiVersion}/ping", () => "pong")
   .WithApiVersionSet(versionSet)
   .MapToApiVersion(2.0);

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

ยืนยันว่า AddApiExplorer มีไว้เพื่ออะไร

สรุปทบทวน

คุณได้กำหนดค่า Asp.Versioning แล้ว:

  • AddApiVersioning กำหนดเวอร์ชันเริ่มต้นและการรายงาน
  • ApiVersionReader.Combine อ่านเวอร์ชันจาก URL ส่วนหัว หรือพารามิเตอร์การสืบค้น
  • [ApiVersion] และ {version:apiVersion} กำหนดเส้นทางของคำขอ ส่วน [MapToApiVersion] ใช้ระบุการทำงาน
  • Minimal API ใช้ชุดเวอร์ชัน

ถัดไป: การสร้างเอกสาร OpenAPI

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

บทเรียน “การกำหนดค่า Asp.Versioning” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การกำหนดค่า Asp.Versioning”

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

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

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

บทเรียน “การกำหนดค่า Asp.Versioning” ใช้เวลานานแค่ไหน

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

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

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

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

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