การกำหนดค่า 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.ApiExplorerAddApiVersioning
ลงทะเบียนการทำเวอร์ชันด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- กลยุทธ์การกำหนดเวอร์ชัน API
- การกำหนดค่า Asp.Versioning
- การสร้างเอกสาร OpenAPI
- การจัดทำเอกสาร API ที่มีหลายเวอร์ชัน