OpenAPI, Sürümleme ve Dağıtım
Swagger/OpenAPI belgeleri oluşturun, API'leri sürümleyin ve bir Minimal API'yi Azure App Service'e veya kapsayıcılara dağıtın.
OpenAPI, Sürümleme ve Dağıtım, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.
Minimal API'lerde OpenAPI
OpenAPI (eski adıyla Swagger), etkileşimli API belgeleri oluşturur. .NET 9'da AddOpenApi() yerleşiktir. Önceki sürümlerde Swashbuckle.AspNetCore kullanın.
Swashbuckle ile Swagger Ekleme
Swashbuckle'ı yükleyin, hizmetlerde yapılandırın ve belirtimi ve Swagger kullanıcı arayüzünü sunmak için ara yazılımı ekleyin.
// 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 için Uç Noktaları Açıklama
Oluşturulan OpenAPI belirtimini zenginleştirmek için Produces, ProducesProblem, WithSummary ve WithDescription kullanın.
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");Rota Gruplarıyla API Sürümlendirme
Basit bir sürümlendirme stratejisinde, sürümle başlayan ön eklere sahip rota grupları kullanılır. Temel sürümlendirme için ek paket gerekmez.
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/productsBaşlık veya Sorgu Sürümlendirmesi için Asp.Versioning
Asp.Versioning.Http paketi, tam OpenAPI entegrasyonuyla Minimal API'lere sorgu dizesi, başlık tabanlı ve URL bölümü tabanlı sürümlendirme ekler.
// 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);Sürüm Başına Ayrı Belirtim Oluşturma
Tüketicilerin yalnızca kendi sürümleriyle ilgili uç noktaları görmesi için Swashbuckle'ı her sürüm için ayrı OpenAPI belgeleri oluşturacak şekilde yapılandırın.
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");
});Kendi İçinde Çalışan İkili Dosya Yayımlama
Minimal API'nizi kendi içinde çalışan tek bir ikili dosya olarak yayımlayın — hedef makinede .NET çalışma zamanı gerekmez.
# 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=trueDocker ile Kapsayıcılaştırma
Resmî .NET temel görüntülerini kullanarak API'yi bir Docker görüntüsünde paketleyin. Çok aşamalı bir Dockerfile, son görüntünün küçük kalmasını sağlar.
# 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-apiAzure App Service'e Dağıtma
CLI üzerinden doğrudan Azure App Service'e dağıtın. Hizmet, ölçeklendirmeyi, sertifikaları ve özel etki alanlarını yönetir.
# 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 myRGSistem Durumu Denetimleri
Orkestratörlerin (Kubernetes, Azure) API'nizin çalışır durumda olduğunu ve trafik sunmaya hazır bulunduğunu doğrulayabilmesi için sistem durumu denetimi uç noktaları ekleyin.
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")
});Gerçek Dünya: Üretim Kontrol Listesi
Bir üretim Minimal API'si; doğruluk, gözlemlenebilirlik ve güvenlik için bu ayarları içermelidir.
// 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();Hızlı Kontrol
Minimal API'lerde uç nokta meta verilerini (Produces, WithSummary vb.) OpenAPI araçlarında görünür kılan metot hangisidir?
Özet: OpenAPI, Sürümlendirme ve Dağıtım
Önemli çıkarımlar:
- AddEndpointsApiExplorer + Swashbuckle = Minimal API'ler için Swagger kullanıcı arayüzü
- Zengin OpenAPI belgeleri için Produces, WithSummary ve WithTags ile açıklamalar ekleyin
- Rota gruplarıyla basit sürümlendirme; gelişmiş senaryolar için Asp.Versioning
- Esnek dağıtım için kendi içinde çalışan bir yayımlama veya Docker görüntüsü kullanın
- Kubernetes/Azure hazır olma yoklamaları için sistem durumu denetimleri ekleyin
Sıkça Sorulan Sorular
“OpenAPI, Sürümleme ve Dağıtım” dersi ücretsiz mi?
Evet — “OpenAPI, Sürümleme ve Dağıtım” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.
“OpenAPI, Sürümleme ve Dağıtım” dersinde ne öğreneceğim?
Swagger/OpenAPI belgeleri oluşturun, API'leri sürümleyin ve bir Minimal API'yi Azure App Service'e veya kapsayıcılara dağıtın. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“OpenAPI, Sürümleme ve Dağıtım” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- İlk Minimal API'nizi Oluşturma
- Yol Grupları, Parametreler ve Doğrulama
- Minimal API'lerde Ara Yazılım ve Filtreler
- OpenAPI, Sürümleme ve Dağıtım