OpenAPI, Pemberian Versi & Deployment
Buat dokumentasi Swagger/OpenAPI, beri versi pada API, dan deploy Minimal API ke Azure App Service atau kontainer.
OpenAPI, Pemberian Versi & Deployment adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.
OpenAPI dalam API Minimal
OpenAPI (sebelumnya Swagger) menghasilkan dokumentasi API interaktif. Di .NET 9, AddOpenApi() tersedia secara bawaan. Untuk versi sebelumnya, gunakan Swashbuckle.AspNetCore.
Menambahkan Swagger dengan Swashbuckle
Pasang Swashbuckle, konfigurasikan di layanan, lalu tambahkan perangkat tengah untuk menyajikan spesifikasi dan antarmuka 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();
}Memberi Anotasi pada Titik Akhir untuk OpenAPI
Gunakan Produces, ProducesProblem, WithSummary, dan WithDescription untuk memperkaya spesifikasi OpenAPI yang dihasilkan.
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");Pembuatan Versi API dengan Grup Rute
Strategi pembuatan versi sederhana menggunakan grup rute yang diawali dengan versi. Tidak diperlukan paket tambahan untuk pembuatan versi dasar.
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 untuk Pembuatan Versi melalui Tajuk/Kueri
Paket Asp.Versioning.Http menambahkan pembuatan versi melalui string kueri, tajuk, dan segmen URL ke API Minimal dengan integrasi OpenAPI lengkap.
// 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);Menghasilkan Spesifikasi Terpisah per Versi
Konfigurasikan Swashbuckle untuk menghasilkan dokumen OpenAPI terpisah bagi setiap versi, sehingga konsumen hanya melihat titik akhir yang relevan dengan versi mereka.
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");
});Menerbitkan Biner Mandiri
Terbitkan API Minimal Anda sebagai satu berkas biner mandiri—tidak diperlukan lingkungan eksekusi .NET pada mesin target.
# 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=trueMembuat Kontainer dengan Docker
Kemas API dalam citra Docker menggunakan citra dasar .NET resmi. Berkas Dockerfile bertahap menjaga ukuran citra akhir tetap kecil.
# 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-apiMenerapkan ke Azure App Service
Terapkan langsung ke Azure App Service dari CLI. Layanan ini menangani penskalaan, sertifikat, dan domain khusus.
# 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 myRGPemeriksaan Kesehatan
Tambahkan titik akhir pemeriksaan kesehatan agar orkestrator (Kubernetes, Azure) dapat memverifikasi bahwa API Anda aktif dan siap melayani lalu lintas.
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")
});Contoh Dunia Nyata: Daftar Periksa Produksi
API Minimal untuk produksi sebaiknya menyertakan pengaturan berikut demi ketepatan, keteramatan, dan keamanan.
// 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();Pemeriksaan Singkat
Metode apa yang membuat metadata titik akhir (Produces, WithSummary, dan sebagainya) terlihat oleh alat OpenAPI dalam API Minimal?
Ringkasan: OpenAPI, Pembuatan Versi & Penerapan
Hal-hal penting:
- AddEndpointsApiExplorer + Swashbuckle = antarmuka Swagger untuk API Minimal
- Beri anotasi dengan Produces, WithSummary, WithTags untuk dokumentasi OpenAPI yang kaya
- Pembuatan versi sederhana melalui grup rute; Asp.Versioning untuk skenario lanjutan
- Terbitkan biner mandiri atau citra Docker untuk penerapan yang fleksibel
- Tambahkan pemeriksaan kesehatan untuk probe kesiapan Kubernetes/Azure
Pertanyaan yang Sering Diajukan
Apakah pelajaran “OpenAPI, Pemberian Versi & Deployment” gratis?
Ya — teks lengkap “OpenAPI, Pemberian Versi & Deployment” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “OpenAPI, Pemberian Versi & Deployment”?
Buat dokumentasi Swagger/OpenAPI, beri versi pada API, dan deploy Minimal API ke Azure App Service atau kontainer. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “OpenAPI, Pemberian Versi & Deployment” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Membuat Minimal API Pertama Anda
- Grup Rute, Parameter & Validasi
- Middleware & Filter dalam Minimal API
- OpenAPI, Pemberian Versi & Deployment