IRONSOFTWAREHOME
ENTWICKLER-UPDATES

Swashbuckle ASP .NET Core (Wie es für Entwickler funktioniert)

Jacob Mellor, Chief Technology Officer @ Team Iron
Jacob Mellor
Updated: 21. April 2026

Swashbuckle ist ein C# .NET Core NuGet-Paket, das hilft, RESTful Web-APIs automatisch zu dokumentieren. In diesem Blog werden wir die Swashbuckle ASP.NET Core und IronPDF Installationsanweisungen NuGet-Pakete erkunden, die die moderne Entwicklung von ASP.NET Core Web-APIs ermöglichen. Zusammen bieten sie eine Vielzahl von Funktionen, die mit minimalem Code erreicht werden können.

Die API-Dokumentationsseiten werden mit dem Swagger UI-Tool angezeigt, das eine swagger.json-Datei verwendet, die aus dem Web-API-Projekt generiert wurde. Das generierte JSON-Dokument folgt dem Open API-Standard. Swashbuckle ist als NuGet-Paket Swashbuckle.AspNetCore verfügbar, das bei Installation und Konfiguration automatisch das Swagger JSON freilegt. Das Swagger UI-Tool liest die Swagger JSON-Datei, die aus XML-Kommentaren generiert wird, die auf den APIs geschrieben sind. Zusätzlich kann eine XML-Dokumentationsdatei erstellt werden, indem sie in der Projektdatei aktiviert wird. XML-Kommentare werden in eine XML-Dokumentationsdatei konvertiert, aus der das Swagger JSON generiert wird. Dann liest die Swagger-Middleware das JSON und stellt Swagger JSON-Endpunkte bereit.

Implementierung in einem .NET Core Web API-Projekt

Lassen Sie uns mit einem Web-API-Projekt beginnen:

dotnet new webapi -n SwashbuckleDemo
cd SwashbuckleDemo
dotnet build
dotnet add package Swashbuckle.AspNetCore --version 6.5.0
dotnet build
SHELL

Hier erstellen wir ein Web-API-Projekt namens "SwashbuckleDemo" und installieren dann das Swashbuckle-Paket in das .NET Core Web-API-Projekt über die Paket-Manager-Konsole.

Swagger-Middleware konfigurieren

Konfigurieren Sie die Swagger-Dienste in der Startup.cs-Datei.

using System.Reflection;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Builder;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Other service configurations...

        // Register the Swagger generator
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });

            // Optionally, include XML comments for additional information
            var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
            var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
            c.IncludeXmlComments(xmlPath);
        });
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        // Other app configurations...

        // Enable middleware to serve generated Swagger as a JSON endpoint.
        app.UseSwagger();

        // Enable Swagger UI (HTML, JS, CSS, etc.), specifying the Swagger JSON endpoint.
        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
        });
    }
}

Fügen Sie einen Controller für todo-Liste-APIs hinzu:

using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Builder;
using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;

// Example to define an entity class
public class Todo
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsComplete { get; set; }
}

// Example to define a DbContext class
public class TodoDb : DbContext
{
    public DbSet<Todo> Todos => Set<Todo>();
}

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "SwashbuckleDemo!");

app.MapGet("/todoitems", async (TodoDb db) =>
    await db.Todos.ToListAsync());

app.MapGet("/todoitems/complete", async (TodoDb db) =>
    await db.Todos.Where(t => t.IsComplete).ToListAsync());

app.MapGet("/todoitems/{id}", async (int id, TodoDb db) =>
    await db.Todos.FindAsync(id) is Todo todo
        ? Results.Ok(todo)
        : Results.NotFound());

app.MapPost("/todoitems", async (Todo todo, TodoDb db) =>
{
    db.Todos.Add(todo);
    await db.SaveChangesAsync();
    return Results.Created($"/todoitems/{todo.Id}", todo);
});

app.MapPut("/todoitems/{id}", async (int id, Todo inputTodo, TodoDb db) =>
{
    var todo = await db.Todos.FindAsync(id);
    if (todo is null) return Results.NotFound();
    todo.Name = inputTodo.Name;
    todo.IsComplete = inputTodo.IsComplete;
    await db.SaveChangesAsync();
    return Results.NoContent();
});

app.MapDelete("/todoitems/{id}", async (int id, TodoDb db) =>
{
    if (await db.Todos.FindAsync(id) is Todo todo)
    {
        db.Todos.Remove(todo);
        await db.SaveChangesAsync();
        return Results.Ok(todo);
    }

    return Results.NotFound();
});

app.Run();

Ein Controller kann auch wie unten hinzugefügt werden:

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
using System;
using System.Linq;

namespace RestFullMinimalApi.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        /// <summary>
        /// Retrieves WeatherForecast
        /// </summary>
        /// <remarks>Awesomeness!</remarks>
        /// <response code="200">Retrieved</response>
        /// <response code="404">Not found</response>
        /// <response code="500">Oops! Can't lookup your request right now</response>
        [HttpGet(Name = "GetWeatherForecast")]
        public IEnumerable<WeatherForecast> Get()
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }
    }

    public class WeatherForecast
    {
        public DateTime Date { get; set; }
        public int TemperatureC { get; set; }
        public string Summary { get; set; }
    }
}

Der obige Code ist auf GitHub - Swashbuckle Demo verfügbar.

Swashbuckle bietet die folgenden Funktionen

Swagger UI-Werkzeug

Swashbuckle ASP .NET Core (Wie es für Entwickler funktioniert): Abbildung 1 - Swagger UI-Tool

Swagger UI ist von der Basis-URL der Web-API-Anwendung unter "/swagger/index.html" verfügbar. Es listet alle REST-APIs aus dem Code auf. Der Swagger-Generator liest die JSON-Datei und füllt die Benutzeroberfläche aus.

Swagger JSON

Swashbuckle.AspNetCore generiert automatisch die Swagger JSON-Datei, die Informationen über die API-Struktur enthält, einschließlich Details wie Endpunkte, Anforderungs- und Antworttypen und mehr. Diese JSON-Datei kann von anderen Werkzeugen und Diensten verwendet werden, die den Swagger/OpenAPI-Standard unterstützen.

Die Swagger JSON-Datei ist von der Basis-URL der Web-API-Anwendung unter "/swagger/v1/swagger.json" verfügbar.

Swashbuckle ASP .NET Core (Wie es für Entwickler funktioniert): Abbildung 2 - Die Swagger JSON-Datei.

Code-Anmerkungen

Entwickler können XML-Kommentare und Attribute in ihren ASP.NET Core-Controllern verwenden, um zusätzliche Informationen für die Swagger-Dokumentation bereitzustellen. Dies umfasst Beschreibungen, Beispiele und andere Metadaten, die die generierte Swagger-Dokumentation verbessern.

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    private readonly ILogger<WeatherForecastController> _logger;

    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }

    /// <summary>
    /// Retrieves WeatherForecast
    /// </summary>
    /// <remarks>Awesomeness!</remarks>
    /// <response code="200">Retrieved</response>
    /// <response code="404">Not found</response>
    /// <response code="500">Oops! Can't lookup your request right now</response>
    [HttpGet(Name = "GetWeatherForecast")]
    public IEnumerable<WeatherForecast> Get()
    {
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateTime.Now.AddDays(index),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        })
        .ToArray();
    }
}

Konfigurationsoptionen

Swashbuckle.AspNetCore bietet verschiedene Konfigurationsoptionen, um anzupassen, wie die Swagger-Dokumentation generiert wird. Entwickler können steuern, welche APIs dokumentiert werden, Namenskonventionen konfigurieren und andere Einstellungen anpassen.

Hier sind einige der wichtigsten Konfigurationsoptionen, die von Swashbuckle.AspNetCore bereitgestellt werden:

SwaggerGen Optionen

c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });

Diese Zeile gibt die Swagger-Dokumentversion an und enthält Metadaten wie Titel und Version Ihrer API.

c.IncludeXmlComments(xmlPath);

Diese Option ermöglicht es Ihnen, XML-Kommentare aus Ihrem Code einzubeziehen, um zusätzliche Informationen in der Swagger-Dokumentation bereitzustellen. Die xmlPath-Variable sollte auf den Speicherort Ihrer XML-Kommentardatei verweisen.

c.DescribeAllParametersInCamelCase();

Diese Option konfiguriert den Swagger-Generator, Parametername in camelCase zu verwenden.

c.OperationFilter<CustomOperationFilter>();

Sie können benutzerdefinierte Operationsfilter registrieren, um die Swagger-Dokumentation für bestimmte Operationen zu ändern. CustomOperationFilter ist eine Klasse, die IOperationFilter implementiert.

Swagger UI Optionen

c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");

Diese Zeile konfiguriert das Swagger UI, um Dokumentation anzuzeigen. Der erste Parameter ist die URL der Swagger JSON-Datei und der zweite Parameter ist ein benutzerfreundlicher Name für die API-Version.

c.RoutePrefix = "swagger";

Sie können das Routen-Präfix für das Swagger UI festlegen. In diesem Beispiel wird das Swagger UI unter /swagger verfügbar sein.

c.DocExpansion(DocExpansion.None);

Diese Option steuert, wie das Swagger UI die API-Dokumentation anzeigt. DocExpansion.None klappt standardmäßig alle Operationen ein.

SwaggerOptionen

c.SerializeAsV2 = true;

Diese Option gibt an, ob das Swagger-Dokument im Format Version 2.0 (true) oder 3.0 (false) serialisiert werden soll. Stellen Sie es auf true ein, wenn Sie Swagger 2.0 verwenden möchten.

c.DisplayOperationId();

Diese Option zeigt die Vorgangs-ID im Swagger UI an, was für das Debugging und das Verstehen der Architektur Ihrer API nützlich sein kann.

c.OAuthClientId("swagger-ui");

Wenn Ihre API OAuth-Authentifizierung verwendet, können Sie die OAuth-Client-ID für Swagger UI konfigurieren.

Die Swashbuckle.AspNetCore-Bibliothek ist anpassbar; kombinieren Sie Optionen und Filter, um die Swagger-Dokumentation anzupassen. Die Swashbuckle.AspNetCore-Bibliothek ist hochgradig anpassbar, und Sie können die Swagger-Dokumentation auf Ihre speziellen Bedürfnisse zugeschnitten durch die Kombination verschiedener Optionen und Filter abstimmen. Bitte immer auf die offizielle Dokumentation oder IntelliSense in Ihrer Entwicklungsumgebung zurückgreifen, um die aktuellsten und umfassendsten Informationen zu den verfügbaren Optionen zu erhalten.

Einführung in IronPDF

IronPDF-Produktübersicht ist die C# PDF-Bibliothek von Iron Software-Website, die hilft, PDF-Dokumente zu lesen und zu erstellen. Es kann formatierten Dokumente mit Stilinformationen problemlos in PDF umwandeln. IronPDF kann mühelos PDFs aus HTML-Inhalten generieren. Es kann HTML-Inhalte von einer URL herunterladen und dann PDFs generieren.

IronPDF ist ein großartiges Tool zum Konvertieren von Webseiten, URLs und HTML in PDFs, die die Quelle perfekt replizieren. Es ist ideal, um PDFs von Online-Inhalten wie Berichten und Rechnungen zu erstellen und mühelos PDF-Versionen jeder Webseite zu erzeugen.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

Installation

Installieren Sie IronPDF über NuGet mit den NuGet Paketverwaltungsdetails oder der Visual Studio-Installationsanleitung Paketverwaltungs-Konsole.

Geben Sie in die Paketverwaltungs-Konsole den Befehl ein:

PM > Install-Package IronPdf

Verwendung von Visual Studio

Swashbuckle ASP .NET Core (So funktioniert es für Entwickler): Abb. 3 - Öffnen Sie Ihr Projekt in Visual Studio. Gehen Sie zum Menü "Werkzeuge", wählen Sie "NuGet-Paket-Manager" und dann "NuGet-Pakete für die Lösung verwalten". Suchen Sie im NuGet-Paket-Manager-Interface nach dem Paket "IronPDF" im Reiter "Durchsuchen". Wählen Sie dann die neueste Version von IronPDF und installieren Sie sie.

Nun, lassen Sie uns unsere Anwendung ändern, um die Funktionalität hinzuzufügen, Website-Inhalte als PDF-Datei herunterzuladen.

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using IronPdf;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

namespace RestFullMinimalApi.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        /// <summary>
        /// Retrieves WeatherForecast
        /// </summary>
        /// <remarks>Awesomeness!</remarks>
        /// <response code="200">Retrieved</response>
        /// <response code="404">Not found</response>
        /// <response code="500">Oops! Can't lookup your request right now</response>
        [HttpGet(Name = "GetWeatherForecast")]
        public IEnumerable<WeatherForecast> Get()
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }

        /// <summary>
        /// Retrieves WeatherForecast as Pdf
        /// </summary>
        /// <remarks>Awesomeness!</remarks>
        /// <response code="200">Retrieved</response>
        /// <response code="404">Not found</response>
        /// <response code="500">Oops! Can't lookup your request right now</response>
        [HttpGet("download", Name = "DownloadWeatherForecast")]
        public IActionResult GetWeatherPdf()
        {
            var results = Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            }).ToArray();

            var html = GetHtml(results);
            var renderer = new ChromePdfRenderer();
            var pdf = renderer.RenderHtmlAsPdf(html);
            var fileName = "WeatherReport.pdf";
            pdf.SaveAs(fileName);

            var stream = new FileStream(fileName, FileMode.Open);
            // Return the PDF file for download
            return new FileStreamResult(stream, "application/octet-stream") { FileDownloadName = fileName };
        }

        private static string GetHtml(WeatherForecast[] weatherForecasts)
        {
            string header = @"
<html>
<head><title>WeatherForecast</title></head>
<body>
<h1>WeatherForecast</h1>
";

            var footer = @"
</body>
</html>";

            var htmlContent = header;
            foreach (var weather in weatherForecasts)
            {
                htmlContent += $@"
    <h2>{weather.Date}</h2>
    <p>Summary: {weather.Summary}</p>
    <p>Temperature in Celsius: {weather.TemperatureC}</p>
    <p>Temperature in Fahrenheit: {weather.TemperatureF}</p>
";
            }
            htmlContent += footer;
            return htmlContent;
        }
    }

    public class WeatherForecast
    {
        public DateTime Date { get; set; }
        public int TemperatureC { get; set; }
        public string Summary { get; set; }
        
        public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
    }
}

Hier verwenden wir die Wetterdaten, um eine HTML-Zeichenfolge zu generieren, die dann verwendet wird, um ein PDF-Dokument zu erstellen.

HTML-Inhalt

Swashbuckle ASP .NET Core (Wie es für Entwickler funktioniert): Abbildung 4 - HTML-Inhalt für Wettervorhersage.

Und der PDF-Bericht sieht so aus:

Swashbuckle ASP .NET Core (Wie es für Entwickler funktioniert): Abbildung 5 - HTML zu PDF-Ausgabedatei: WeatherReport.pdf

Der komplette Code ist auf GitHub - Swashbuckle Demo Quellcode zu finden.
Das Dokument hat ein kleines Wasserzeichen für Testlizenzen, das mit einer gültigen Lizenz entfernt werden kann.

Lizenzierung (Kostenlose Testversion verfügbar)

Für das obige Codebeispiel ist ein Lizenzschlüssel erforderlich. Platzieren Sie diesen Schlüssel in der appsettings.json-Datei.

{
    "IronPdf": {
        "LicenseKey": "your license key"
    }
}
JSON

Eine Testlizenz ist für Entwickler nach der Registrierung bei IronPDF Testregistrierung verfügbar. Für eine Testlizenz wird keine Kreditkarte benötigt. Registrieren Sie sich mit Ihrer E-Mail für eine kostenlose Testversion.

Abschluss

Das Verständnis von Swashbuckle und IronPDF ermöglicht es Ihnen, API-Dokumentations- und PDF-Erstellungsmöglichkeiten effektiv in Ihre ASP.NET Core-Anwendungen zu integrieren. IronPDF bietet auch eine umfassende Dokumentation für Erste Schritte zusammen mit verschiedenen Beispielcode für die PDF-Erstellung.

Zusätzlich können Sie verwandte Softwareprodukte von Iron Software erkunden, die Ihnen helfen, Ihre Programmierkenntnisse zu erweitern und den modernen Anforderungen von Anwendungen gerecht zu werden.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der Pionierarbeit in der C# PDF-Technologie leistet. Als der ursprüngliche Entwickler hinter der Kern-Codebasis von Iron Software hat er die Produktarchitektur des Unternehmens seit seiner Gründung geprägt und es zusammen mit CEO Cameron Rimington in ein Unternehmen mit mehr als 50 Mitarbeitern verwandelt, das die NASA, Tesla und globale Regierungsbehörden beliefert.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

OR
bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
Buchen Sie Ihre kostenlose Live-Demo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Kundenlogos von Iron Software
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Kundenlogos von Iron Software
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.
C# NuGet-Bibliothek für PDF
Installation mit NuGet

Version: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. Rechtsklick auf Referenzen, NuGet-Pakete verwalten
  2. Wählen Sie Durchsuchen und suchen Sie nach 'IronPDF'
  3. Paket auswählen und installieren
C# PDF DLL
Download DLL

Version: 2026.9

oder laden Sie den Windows-Installer hier herunter.

  1. Laden Sie IronPDF herunter und entpacken Sie es in ein Verzeichnis wie ~/Libs innerhalb Ihres Lösungsverzeichnisses
  2. Im Visual Studio-Projektmappen-Explorer klicken Sie mit der rechten Maustaste auf Referenzen. Wählen Sie Durchsuchen, "IronPDF.dll"

Lizenzen ab 749 $