Zum Fußzeileninhalt springen
.NET HILFE

OpenAPI .NET (Funktionsweise für Entwickler)

OpenAPI, früher bekannt als Swagger, ist eine Spezifikation für den Aufbau und die Beschreibung von RESTful APIs. Sie ermöglicht es Entwicklern, die Struktur ihrer APIs in einem standardisierten Format zu definieren, sodass verschiedene Tools und Dienste die REST API effektiv verstehen und mit ihr interagieren können, während sie ein Feedback geben. Im .NET-Ökosystem wird die OpenAPI .NET-Integration durch mehrere Bibliotheken und Tools erleichtert, die es einfacher machen, APIs zu erstellen, zu dokumentieren und zu konsumieren.

In diesem Artikel erfahren wir mehr über die OpenAPI-Support-Spezifikationen und wie man mit IronPDF eine PDF-Datei erstellt und als Antwort auf einen API-Aufruf zurückgibt.

Einrichten von OpenAPI in .NET

Um mit dem OpenAPI .NET-Projekt zu beginnen, verwendet man typischerweise die Swashbuckle-Bibliothek, die für Ihre ASP.NET Core APIs OpenAPI-Spezifikationen oder -Dokumentationen generiert.

Schritt 1: Swashbuckle installieren

Zuerst müssen Sie das Swashbuckle.AspNetCore-Paket über NuGet in Visual Studio installieren. Sie können dies mit der NuGet-Paket-Manager-Konsole tun:

Install-Package Swashbuckle.AspNetCore

Oder verwenden Sie die .NET-CLI:

dotnet add package Swashbuckle.AspNetCore
dotnet add package Swashbuckle.AspNetCore
SHELL

Schritt 2: Swashbuckle konfigurieren

Als nächstes müssen Sie Swashbuckle in Ihrem ASP.NET Core-Projekt konfigurieren. Dazu gehört das Aktualisieren der Program.cs-Datei, um Swagger-Dienste hinzuzufügen und die Swagger-Middleware zu konfigurieren.

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
// Configures Swagger/OpenAPI descriptions.
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
// Configures Swagger/OpenAPI descriptions.
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
$vbLabelText   $csharpLabel

Erstellen und Anzeigen von API-Dokumentation

Sobald Swashbuckle konfiguriert ist, generiert das Ausführen Ihrer Anwendung automatisch OpenAPI-Dokumentation. Sie können diese OpenAPI-Beschreibungen anzeigen, indem Sie zur Swagger UI-Schnittstelle navigieren.

Verwendung von OpenAPI-Definitionen

OpenAPI-Definitionen sind leistungsstarke Werkzeuge, die zur Generierung von Client-SDKs, zum Testen von APIs und zum Sicherstellen der Konsistenz über verschiedene Dienste hinweg genutzt werden können. Die OpenAPI-Spezifikation definiert eine standardisierte, sprachunabhängige Schnittstelle zu APIs, die es sowohl Menschen als auch Computern ermöglicht, die Fähigkeiten eines Dienstes ohne Zugriff auf den Quellcode zu verstehen.

Erweiterung von OpenAPI mit benutzerdefinierten Kommentaren

Swashbuckle ermöglicht es Ihnen, Ihre OpenAPI-Dokumentation mit benutzerdefinierten Anmerkungen zu verbessern. Diese Anmerkungen können direkt zu Ihren Controllern und Modellen hinzugefügt werden, um zusätzliche Informationen über das Verhalten und die Datenstrukturen der API bereitzustellen.

Beispiel: Benutzerdefinierte Anmerkungen

using Microsoft.AspNetCore.Mvc;

namespace WebApplication8.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;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        [SwaggerOperation(Summary = "Gets the weather forecast for the next 5 days")]
        [SwaggerResponse(200, "Successfully retrieved weather forecast")]
        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();
        }
    }
}
using Microsoft.AspNetCore.Mvc;

namespace WebApplication8.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;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        [SwaggerOperation(Summary = "Gets the weather forecast for the next 5 days")]
        [SwaggerResponse(200, "Successfully retrieved weather forecast")]
        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();
        }
    }
}
$vbLabelText   $csharpLabel

In diesem Beispiel werden die Attribute SwaggerOperation und SwaggerResponse genutzt, um detaillierte OpenAPI-Beschreibungen und Antwortcodes für den Endpunkt bereitzustellen.

Ausgabe

OpenAPI .NET (Wie es für Entwickler funktioniert): Abbildung 1 - Ausgabe benutzerdefinierter Anmerkungen

Klicken Sie auf die Schaltfläche Ausführen, und Sie erhalten die folgende Antwort.

OpenAPI .NET (Wie es für Entwickler funktioniert): Abbildung 2 - Ausgabe der Antwort

IronPDF

IronPDF für ASP.NET ist ein leistungsstarkes Werkzeug, das eine nahtlose Erzeugung und Bearbeitung von PDF-Dokumenten innerhalb von ASP.NET-Anwendungen ermöglicht. Mit seiner intuitiven API und robusten Funktionalität können Entwickler mühelos die PDF-Generierung in ihre Webprojekte integrieren, um den Benutzern verbesserte Dokumentverwaltungsfähigkeiten zu bieten. Ob es sich um das Erstellen von PDFs von Grund auf, das Konvertieren von HTML-Inhalten in PDF oder das Hinzufügen dynamischer Elemente wie Bilder und Text handelt, IronPDF vereinfacht den Prozess und sorgt für eine effiziente und professionelle Dokumenterstellung.

Schritte zur Installation mit dem NuGet-Paketmanager:

  1. Öffnen Sie Ihr ASP.NET-Projekt in Visual Studio und navigieren Sie zum Menü "Werkzeuge".
  2. Wählen Sie "NuGet-Paket-Manager" und klicken Sie dann auf "NuGet-Pakete für Lösung verwalten".
  3. Suchen Sie im Tab "Durchsuchen" nach "IronPDF" und wählen Sie die gewünschte Version aus. Klicken Sie auf "Installieren", um das Paket zu Ihrem Projekt hinzuzufügen. IronPDF und seine Abhängigkeiten werden automatisch heruntergeladen und integriert, sodass Sie seine Funktionalität nahtlos in Ihrer ASP.NET-Anwendung nutzen können.

OpenAPI .NET (Wie es für Entwickler funktioniert): Abbildung 3 - IronPDF

PDF-Datei als Antwort auf API-Aufruf abrufen

Fügen Sie den folgenden Code in Ihre Controller-Datei ein, er verwendet IronPDF, um eine PDF-Datei zu erstellen und als Antwort auf den API-Aufruf zurückzugeben.

using Microsoft.AspNetCore.Mvc;
using IronPdf;

namespace WebApplication8.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;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        public IActionResult GetWeatherForecastPdf()
        {
            var htmlContent = @"
        <html>
        <head>
            <title>Weather Forecast</title>
        </head>
        <body>
            <h1>Weather Forecast</h1>
            <table>
                <tr>
                    <th>Date</th>
                    <th>Temperature (Celsius)</th>
                    <th>Summary</th>
                </tr>";

            var forecasts = 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)]
            });

            // Iterate over the forecasts and add data to the HTML string
            foreach (var forecast in forecasts)
            {
                htmlContent += $@"
            <tr>
                <td>{forecast.Date.ToShortDateString()}</td>
                <td>{forecast.TemperatureC}</td>
                <td>{forecast.Summary}</td>
            </tr>";
            }

            htmlContent += @"
            </table>
        </body>
        </html>";

            // Convert the HTML string to a PDF using IronPDF
            var renderer = new ChromePdfRenderer();
            var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);

            // Retrieve the byte array of the generated PDF
            var pdfBytes = pdfDocument.BinaryData;
            // Return the PDF file to the client
            return File(pdfBytes, "application/pdf", "WeatherForecast.pdf");
        }
    }
}
using Microsoft.AspNetCore.Mvc;
using IronPdf;

namespace WebApplication8.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;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        public IActionResult GetWeatherForecastPdf()
        {
            var htmlContent = @"
        <html>
        <head>
            <title>Weather Forecast</title>
        </head>
        <body>
            <h1>Weather Forecast</h1>
            <table>
                <tr>
                    <th>Date</th>
                    <th>Temperature (Celsius)</th>
                    <th>Summary</th>
                </tr>";

            var forecasts = 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)]
            });

            // Iterate over the forecasts and add data to the HTML string
            foreach (var forecast in forecasts)
            {
                htmlContent += $@"
            <tr>
                <td>{forecast.Date.ToShortDateString()}</td>
                <td>{forecast.TemperatureC}</td>
                <td>{forecast.Summary}</td>
            </tr>";
            }

            htmlContent += @"
            </table>
        </body>
        </html>";

            // Convert the HTML string to a PDF using IronPDF
            var renderer = new ChromePdfRenderer();
            var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);

            // Retrieve the byte array of the generated PDF
            var pdfBytes = pdfDocument.BinaryData;
            // Return the PDF file to the client
            return File(pdfBytes, "application/pdf", "WeatherForecast.pdf");
        }
    }
}
$vbLabelText   $csharpLabel

OpenAPI .NET (Wie es für Entwickler funktioniert): Abbildung 4 - API-Ausgabe

Laden Sie die angehängte PDF-Datei herunter und öffnen Sie sie.

OpenAPI .NET (Wie es für Entwickler funktioniert): Abbildung 5 - PDF-Ausgabe

Abschluss

OpenAPI, früher bekannt als Swagger, rationalisiert das Design und die Dokumentation von RESTful APIs im .NET-Ökosystem durch Bibliotheken wie Swashbuckle, die die automatische Generierung von API-Dokumentationen für ASP.NET Core-Projekte erleichtern. Durch die Demonstration der Synergie zwischen OpenAPI und IronPDF zeigten wir, wie man die Fähigkeiten von IronPDF nutzen kann, um PDF-Dateien aus HTML-Inhalten zu erstellen und sie als API-Antworten zurückzugeben, was die Funktionalität von ASP.NET-Anwendungen bereichert. Durch die Verwendung von OpenAPI-Standards und die Nutzung der robusten Funktionen von IronPDF können Entwickler ihre API-Dokumentationspraktiken verbessern und den Nutzern gut ausgestattete, funktionsreiche Anwendungen bieten.

Für detaillierte Informationen zur IronPDF-Lizenzierung besuchen Sie bitte die IronPDF-Lizenzierungsdetails. Zusätzlich können Sie unser Tutorial zur HTML-zu-PDF-Konvertierung für weitere Anleitungen erkunden.

Häufig gestellte Fragen

Wie kann ich HTML-Inhalte in einer ASP.NET-Anwendung in ein PDF konvertieren?

Sie können IronPDF in einer ASP.NET-Anwendung verwenden, um HTML-Inhalte in ein PDF zu konvertieren. Durch die Nutzung der Funktionen von IronPDF können Sie HTML-Strings oder -Dateien in PDF-Dokumente rendern, die dann als API-Antworten bereitgestellt oder für Dokumentenverwaltungszwecke gespeichert werden können.

Welche Rolle spielt OpenAPI im .NET-Ökosystem?

OpenAPI spielt eine entscheidende Rolle im .NET-Ökosystem, indem es eine standardisierte Möglichkeit bietet, RESTful APIs zu definieren und zu dokumentieren. Diese Integration wird oft durch Tools wie Swashbuckle erleichtert, die OpenAPI-Spezifikationen erzeugen und eine einfache API-Nutzung in ASP.NET Core-Projekten ermöglichen.

Wie richte ich Swagger UI in einem .NET-Projekt mit Swashbuckle ein?

Um Swagger UI in einem .NET-Projekt mit Swashbuckle einzurichten, installieren Sie das Swashbuckle.AspNetCore-Paket über NuGet. Konfigurieren Sie dann die Swagger-Dienste in Ihrer Program.cs-Datei und richten Sie die Swagger-Middleware ein, um die automatische Erstellung und den Zugriff auf API-Dokumentationen über Swagger UI zu ermöglichen.

Wie kann ich Client-SDKs aus OpenAPI-Definitionen in .NET generieren?

OpenAPI-Definitionen können verwendet werden, um Client-SDKs zu generieren, die den Verbrauch von APIs erleichtern, indem sie die Komplexität von API-Aufrufen abstrahieren. In .NET können Tools wie Swashbuckle diese Definitionen erzeugen, die dann mit Tools wie AutoRest verwendet werden können, um Client-SDKs in verschiedenen Programmiersprachen zu erstellen.

Welche Vorteile bietet die Verwendung benutzerdefinierter Annotationen in der OpenAPI-Dokumentation?

Benutzerdefinierte Annotationen in der OpenAPI-Dokumentation verbessern die Klarheit und Detailgenauigkeit von API-Spezifikationen. In .NET ermöglicht Swashbuckle die Verwendung von Attributen wie SwaggerOperation und SwaggerResponse, um Beschreibungen und Antwortcodes hinzuzufügen, wodurch die API-Dokumentation informativer und für Entwickler einfacher zu verstehen wird.

Wie kann ich eine PDF-Datei als API-Antwort in ASP.NET Core liefern?

Sie können eine PDF-Datei als API-Antwort in ASP.NET Core liefern, indem Sie IronPDF verwenden. Erstellen Sie das PDF aus HTML-Inhalten mit den Render-Methoden von IronPDF und geben Sie die PDF-Datei in Ihrer API-Controller-Aktion mit ASP.NET Core's IActionResult zur Ausgabe der Datei als Teil der Antwort zurück.

Welche Vorteile bringt die Kombination von OpenAPI und PDF-Erstellungstools für ASP.NET-Anwendungen?

Die Kombination von OpenAPI und PDF-Erstellungstools wie IronPDF in ASP.NET-Anwendungen bietet umfassende API-Dokumentation und verbessert die Funktionalität, indem sie APIs ermöglicht, professionelle PDF-Dokumente zurückzugeben. Diese Integration unterstützt eine effiziente Dokumentenverwaltung und bereichert die Gesamtkapazitäten der Anwendung.

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 führend in der C# PDF-Technologie ist. Als ursprünglicher Entwickler der Iron Software-Kerncodebasis hat er die Produktarchitektur des Unternehmens seit seiner Gründung gestaltet und zusammen mit CEO Cameron Rimington in ein Unternehmen ...

Weiterlesen