OpenAPI การกำหนดเวอร์ชัน และการนำไปใช้งาน
สร้างเอกสาร Swagger/OpenAPI กำหนดเวอร์ชัน API และนำ Minimal API ไปใช้งานบน Azure App Service หรือคอนเทนเนอร์
OpenAPI การกำหนดเวอร์ชัน และการนำไปใช้งาน เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
OpenAPI ใน API แบบมินิมอล
OpenAPI (เดิมชื่อ Swagger) ใช้สร้างเอกสาร API แบบโต้ตอบได้ ใน .NET 9 มี AddOpenApi() ให้ใช้งานในตัว ส่วนเวอร์ชันก่อนหน้านี้ให้ใช้ Swashbuckle.AspNetCore
การเพิ่ม Swagger ด้วย Swashbuckle
ติดตั้ง Swashbuckle กำหนดค่าในบริการ และเพิ่มมิดเดิลแวร์เพื่อให้บริการข้อกำหนดและส่วนติดต่อผู้ใช้ Swagger
// dotnet add package Swashbuckle.AspNetCore
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(opt =>
opt.SwaggerDoc("v1", new() { Title = "Products API", Version = "v1" }));
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}การใส่คำอธิบายจุดปลายทางสำหรับ OpenAPI
ใช้ Produces, ProducesProblem, WithSummary และ WithDescription เพื่อเพิ่มรายละเอียดให้ข้อกำหนด OpenAPI ที่สร้างขึ้น
app.MapGet("/products/{id}", GetProduct)
.WithName("GetProductById")
.WithSummary("Get a product by ID")
.WithDescription("Returns the product matching the given numeric ID.")
.Produces<ProductDto>(200)
.Produces<ProblemDetails>(404)
.WithTags("Products");การกำหนดเวอร์ชัน API ด้วยกลุ่มเส้นทาง
กลยุทธ์การกำหนดเวอร์ชันแบบง่ายใช้กลุ่มเส้นทางที่มีเวอร์ชันเป็นคำนำหน้า โดยไม่ต้องติดตั้งแพ็กเกจเพิ่มเติมสำหรับการกำหนดเวอร์ชันพื้นฐาน
var v1 = app.MapGroup("/api/v1").WithTags("v1");
var v2 = app.MapGroup("/api/v2").WithTags("v2");
v1.MapGet("/products", GetProductsV1);
v2.MapGet("/products", GetProductsV2); // different DTO shape
// Clients use /api/v1/products or /api/v2/productsAsp.Versioning สำหรับการกำหนดเวอร์ชันผ่านส่วนหัวหรือคำค้น
แพ็กเกจ Asp.Versioning.Http เพิ่มการกำหนดเวอร์ชันผ่านคำค้น ส่วนหัว และส่วนของ URL ให้กับ API แบบมินิมอล พร้อมการผสานรวมกับ OpenAPI อย่างสมบูรณ์
// dotnet add package Asp.Versioning.Http
builder.Services.AddApiVersioning(opt =>
{
opt.DefaultApiVersion = new ApiVersion(1, 0);
opt.AssumeDefaultVersionWhenUnspecified = true;
opt.ApiVersionReader = new QueryStringApiVersionReader("api-version");
});
// /products?api-version=2.0
app.MapGet("/products", GetProducts)
.HasApiVersion(2, 0);การสร้างข้อกำหนดแยกตามเวอร์ชัน
กำหนดค่า Swashbuckle ให้สร้างเอกสาร OpenAPI แยกสำหรับแต่ละเวอร์ชัน เพื่อให้ผู้ใช้บริการเห็นเฉพาะจุดปลายทางที่เกี่ยวข้องกับเวอร์ชันของตน
builder.Services.AddSwaggerGen(opt =>
{
opt.SwaggerDoc("v1", new() { Title = "API", Version = "v1" });
opt.SwaggerDoc("v2", new() { Title = "API", Version = "v2" });
});
app.UseSwaggerUI(opt =>
{
opt.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
opt.SwaggerEndpoint("/swagger/v2/swagger.json", "v2");
});การเผยแพร่ไบนารีแบบในตัว
เผยแพร่ API แบบมินิมอลเป็นไบนารีเดียวที่รวมส่วนประกอบที่จำเป็นทั้งหมด โดยไม่ต้องติดตั้งรันไทม์ .NET ในเครื่องเป้าหมาย
# Publish for Linux x64 as self-contained
dotnet publish -c Release -r linux-x64 --self-contained true
# Run the output binary
./bin/Release/net9.0/linux-x64/publish/MyApi
# Optionally single-file:
# dotnet publish -c Release -r linux-x64 -p:PublishSingleFile=trueการสร้างคอนเทนเนอร์ด้วย Docker
บรรจุ API ลงในอิมเมจ Docker โดยใช้อิมเมจพื้นฐาน .NET อย่างเป็นทางการ Dockerfile แบบหลายระยะช่วยให้ขนาดอิมเมจสุดท้ายเล็กลง
# Dockerfile (multi-stage)
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:9.0
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyApi.dll"]
# Build and run
# docker build -t my-api .
# docker run -p 8080:8080 my-apiการนำไปใช้งานบน Azure App Service
นำไปใช้งานบน Azure App Service ได้โดยตรงจาก CLI บริการจะจัดการการปรับขนาด ใบรับรอง และโดเมนแบบกำหนดเองให้
# Publish to folder first
dotnet publish -c Release -o ./publish
# Deploy to Azure App Service
az webapp up \
--name my-products-api \
--resource-group myRG \
--runtime DOTNETCORE:9.0 \
--sku B1
# View logs
az webapp log tail --name my-products-api --resource-group myRGการตรวจสอบสถานะ
เพิ่มจุดปลายทางสำหรับตรวจสอบสถานะ เพื่อให้ระบบจัดการคอนเทนเนอร์ เช่น Kubernetes และ Azure ตรวจสอบได้ว่า API ยังทำงานอยู่และพร้อมรับการรับส่งข้อมูล
builder.Services.AddHealthChecks()
.AddDbContextCheck<AppDbContext>()
.AddUrlGroup(new Uri("https://api.external.com/ping"), "external");
app.MapHealthChecks("/health");
app.MapHealthChecks("/health/ready", new HealthCheckOptions
{
Predicate = hc => hc.Tags.Contains("ready")
});ตัวอย่างจากโลกจริง: รายการตรวจสอบสำหรับใช้งานจริง
API แบบมินิมอลสำหรับใช้งานจริงควรมีการตั้งค่าเหล่านี้ เพื่อความถูกต้อง การสังเกตการณ์ และความปลอดภัย
// builder configuration
builder.Services.AddProblemDetails();
builder.Services.AddHealthChecks();
builder.Services.AddRateLimiter(...);
builder.Services.AddOutputCache();
// app pipeline
app.UseHttpsRedirection();
app.UseExceptionHandler();
app.UseRateLimiter();
app.UseOutputCache();
app.UseAuthentication();
app.UseAuthorization();
app.MapHealthChecks("/health");
// ... your endpoints
app.Run();ตรวจสอบความเข้าใจ
เมธอดใดทำให้เมทาดาทาของจุดปลายทาง (Produces, WithSummary และอื่น ๆ) มองเห็นได้สำหรับเครื่องมือ OpenAPI ใน API แบบมินิมอล
สรุป: OpenAPI การกำหนดเวอร์ชัน และการนำไปใช้งาน
ประเด็นสำคัญ:
- AddEndpointsApiExplorer + Swashbuckle = Swagger UI สำหรับ API แบบมินิมอล
- ใส่คำอธิบายด้วย Produces, WithSummary และ WithTags เพื่อสร้างเอกสาร OpenAPI ที่มีรายละเอียดครบถ้วน
- กำหนดเวอร์ชันแบบง่ายผ่านกลุ่มเส้นทาง และใช้ Asp.Versioning สำหรับกรณีที่ซับซ้อน
- เผยแพร่แบบรวมส่วนประกอบในตัวหรือเป็นอิมเมจ Docker เพื่อความยืดหยุ่นในการนำไปใช้งาน
- เพิ่มการตรวจสอบสถานะสำหรับโพรบตรวจสอบความพร้อมของ Kubernetes และ Azure
เรียนรู้ C# ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 93
- บทเรียน
- 346
คำถามที่พบบ่อย
บทเรียน “OpenAPI การกำหนดเวอร์ชัน และการนำไปใช้งาน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “OpenAPI การกำหนดเวอร์ชัน และการนำไปใช้งาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “OpenAPI การกำหนดเวอร์ชัน และการนำไปใช้งาน”
สร้างเอกสาร Swagger/OpenAPI กำหนดเวอร์ชัน API และนำ Minimal API ไปใช้งานบน Azure App Service หรือคอนเทนเนอร์ คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “OpenAPI การกำหนดเวอร์ชัน และการนำไปใช้งาน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้าง Minimal API แรกของคุณ
- กลุ่มเส้นทาง พารามิเตอร์ และการตรวจสอบ
- มิดเดิลแวร์และตัวกรองใน Minimal APIs
- OpenAPI การกำหนดเวอร์ชัน และการนำไปใช้งาน