0Pricing
C# Academy · Lektion

OpenAPI, Versionierung und Deployment

Generieren Sie Swagger-/OpenAPI-Dokumentationen, versionieren Sie APIs und stellen Sie eine Minimal API in Azure App Service oder Containern bereit.

OpenAPI, Versionierung und Deployment ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

OpenAPI in Minimal APIs

OpenAPI (früher Swagger) generiert eine interaktive API-Dokumentation. In .NET 9 ist AddOpenApi() integriert. Für frühere Versionen verwenden Sie Swashbuckle.AspNetCore.

Swagger mit Swashbuckle hinzufügen

Installieren Sie Swashbuckle, konfigurieren Sie es in den Diensten und fügen Sie die Middleware hinzu, um die Spezifikation und die Swagger-Benutzeroberfläche bereitzustellen.

// 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();
}

Endpunkte für OpenAPI annotieren

Verwenden Sie Produces, ProducesProblem, WithSummary und WithDescription, um die generierte OpenAPI-Spezifikation anzureichern.

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-Versionierung mit Routengruppen

Eine einfache Versionierungsstrategie verwendet Routengruppen, denen die Versionsnummer vorangestellt wird. Für eine grundlegende Versionierung ist kein zusätzliches Paket erforderlich.

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/products

Asp.Versioning für Header-/Query-String-Versionierung

Das Paket Asp.Versioning.Http fügt Minimal APIs eine Versionierung über Query-String, Header und URL-Segmente mit vollständiger OpenAPI-Integration hinzu.

// 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);

Eine separate Spezifikation pro Version generieren

Konfigurieren Sie Swashbuckle so, dass für jede Version separate OpenAPI-Dokumente generiert werden. Dadurch sehen Benutzer nur die für ihre Version relevanten Endpunkte.

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");
});

Eine Self-Contained-Binärdatei veröffentlichen

Veröffentlichen Sie Ihre Minimal API als eigenständige einzelne Binärdatei – auf dem Zielcomputer ist keine .NET-Laufzeit erforderlich.

# 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

Mit Docker containerisieren

Verpacken Sie die API mithilfe der offiziellen .NET-Basisimages in ein Docker-Image. Ein mehrstufiges Dockerfile hält das endgültige Image klein.

# 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

In Azure App Service bereitstellen

Stellen Sie die API direkt über die CLI in Azure App Service bereit. Der Dienst übernimmt Skalierung, Zertifikate und benutzerdefinierte Domänen.

# 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

Health Checks

Fügen Sie Health-Check-Endpunkte hinzu, damit Orchestratoren (Kubernetes, Azure) überprüfen können, ob Ihre API aktiv und bereit für die Verarbeitung von Datenverkehr ist.

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")
});

Praxisbeispiel: Produktions-Checkliste

Eine produktionsfähige Minimal API sollte diese Einstellungen für Korrektheit, Beobachtbarkeit und Sicherheit enthalten.

// 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();

Kurzer Check

Welche Methode macht Endpunktmetadaten (Produces, WithSummary usw.) für OpenAPI-Tools in Minimal APIs sichtbar?

Zusammenfassung: OpenAPI, Versionierung und Bereitstellung

Wichtige Erkenntnisse:

  • AddEndpointsApiExplorer + Swashbuckle = Swagger UI für Minimal APIs
  • Annotieren Sie Endpunkte mit Produces, WithSummary und WithTags, um umfangreiche OpenAPI-Dokumentation zu erstellen
  • Einfache Versionierung über Routengruppen; Asp.Versioning für fortgeschrittene Szenarien
  • Veröffentlichen Sie eine Self-Contained-Anwendung oder ein Docker-Image für eine flexible Bereitstellung
  • Fügen Sie Health Checks für Readiness-Probes von Kubernetes/Azure hinzu

Häufig gestellte Fragen

Ist die Lektion „OpenAPI, Versionierung und Deployment“ kostenlos?

Ja — der vollständige Text von „OpenAPI, Versionierung und Deployment“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „OpenAPI, Versionierung und Deployment“?

Generieren Sie Swagger-/OpenAPI-Dokumentationen, versionieren Sie APIs und stellen Sie eine Minimal API in Azure App Service oder Containern bereit. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C# Academy zu starten?

Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „OpenAPI, Versionierung und Deployment“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?

Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Ihre erste Minimal API erstellen
  2. Route-Gruppen, Parameter und Validierung
  3. Middleware und Filter in Minimal APIs
  4. OpenAPI, Versionierung und Deployment
← Zurück zu C# Academy