
OpenAPI .NET (Comment ça fonctionne pour les développeurs)
OpenAPI, anciennement connu sous le nom de Swagger, est une spécification pour construire et décrire des API RESTful. Il permet aux développeurs de définir la structure de leurs API dans un format standardisé, permettant à divers outils et services de comprendre et d'interagir efficacement avec l'API REST et de fournir des commentaires. Dans l'écosystème .NET, l'intégration OpenAPI .NET est facilitée par plusieurs bibliothèques et outils qui facilitent la création, la documentation et la consommation d'API.
Dans cet article, nous allons apprendre les spécifications de support d'OpenAPI et comment créer un fichier PDF à l'aide d'IronPDF et le renvoyer comme réponse à un appel API.
Configuration d'OpenAPI dans .NET
Pour commencer avec le projet .NET OpenAPI, vous utilisez généralement la bibliothèque Swashbuckle qui génère la spécification OpenAPI ou la documentation pour vos API ASP.NET Core.
Étape 1 : Installer Swashbuckle
Tout d'abord, vous devez installer le package Swashbuckle.AspNetCore via NuGet dans Visual Studio. Vous pouvez le faire en utilisant la console du gestionnaire de packages NuGet :
Ou en utilisant l'interface de ligne de commande .NET :
dotnet add package Swashbuckle.AspNetCore
Étape 2 : Configurer Swashbuckle
Ensuite, vous devez configurer Swashbuckle dans votre projet ASP.NET Core. Cela implique la mise à jour du fichier Program.cs pour ajouter des services Swagger et configurer le middleware Swagger.
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();Dim builder = WebApplication.CreateBuilder(args)
' Add services to the container.
builder.Services.AddControllers()
' Configures Swagger/OpenAPI descriptions.
builder.Services.AddEndpointsApiExplorer()
builder.Services.AddSwaggerGen()
Dim app = builder.Build()
' Configure the HTTP request pipeline.
If app.Environment.IsDevelopment() Then
app.UseSwagger()
app.UseSwaggerUI()
End If
app.UseHttpsRedirection()
app.UseAuthorization()
app.MapControllers()
app.Run()Génération et visualisation de la documentation API
Une fois que Swashbuckle est configuré, l'exécution de votre application générera automatiquement la documentation OpenAPI. Vous pouvez visualiser ces descriptions OpenAPI en naviguant vers l'interface utilisateur Swagger.
Utilisation des définitions OpenAPI
Les définitions OpenAPI sont des outils puissants qui peuvent être utilisés pour générer des SDK clients, tester des API, et assurer la cohérence entre différents services. La spécification OpenAPI définit une interface standard, indépendante de la langue, pour les API, permettant à la fois aux humains et aux ordinateurs de comprendre les capacités d'un service sans accès au code source.
Extension d'OpenAPI avec des annotations personnalisées
Swashbuckle vous permet d'améliorer votre documentation OpenAPI avec des annotations personnalisées. Ces annotations peuvent être ajoutées directement à vos contrôleurs et modèles pour fournir des informations supplémentaires sur le comportement de l'API et les structures de données.
Exemple : Annotations personnalisées
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();
}
}
}Imports Microsoft.AspNetCore.Mvc
Namespace WebApplication8.Controllers
<ApiController>
<Route("[controller]")>
Public Class WeatherForecastController
Inherits ControllerBase
Private Shared ReadOnly Summaries() As String = { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" }
Private ReadOnly _logger As ILogger(Of WeatherForecastController)
Public Sub New(ByVal logger As ILogger(Of WeatherForecastController))
_logger = logger
End Sub
<HttpGet(Name := "GetWeatherForecast")>
<SwaggerOperation(Summary := "Gets the weather forecast for the next 5 days")>
<SwaggerResponse(200, "Successfully retrieved weather forecast")>
Public Function [Get]() As IEnumerable(Of WeatherForecast)
Return Enumerable.Range(1, 5).Select(Function(index) New WeatherForecast With {
.Date = DateTime.Now.AddDays(index),
.TemperatureC = Random.Shared.Next(-20, 55),
.Summary = Summaries(Random.Shared.Next(Summaries.Length))
}).ToArray()
End Function
End Class
End NamespaceDans cet exemple, les attributs SwaggerOperation et SwaggerResponse sont utilisés pour fournir des descriptions OpenAPI détaillées et les codes de réponse pour le point de terminaison.
Résultat

Cliquez sur le bouton Exécuter, et vous obtiendrez la réponse suivante.

IronPDF
IronPDF pour ASP.NET est un outil puissant qui permet la génération et la manipulation transparentes de documents PDF au sein d'applications ASP.NET. Avec son API intuitive et sa fonctionnalité robuste, les développeurs peuvent intégrer sans effort la génération de PDF dans leurs projets web, offrant aux utilisateurs des capacités de gestion de documents améliorées. Que ce soit pour créer des PDFs à partir de zéro, convertir du contenu HTML en PDF, ou ajouter des éléments dynamiques comme des images et du texte, IronPDF simplifie le processus, assurant une génération de documents efficace et professionnelle.
Étapes pour installer à l'aide du gestionnaire de packages NuGet :
- Ouvrez votre projet ASP.NET dans Visual Studio et accédez au menu "Outils".
- Sélectionnez "Gestionnaire de package NuGet" puis cliquez sur "Gérer les packages NuGet pour la solution".
- Dans l'onglet "Parcourir", recherchez "IronPDF" et sélectionnez la version désirée. Cliquez sur "Installer" pour ajouter le package à votre projet. IronPDF et ses dépendances seront automatiquement téléchargés et intégrés, vous permettant de commencer à utiliser ses fonctionnalités dans votre application ASP.NET sans problème.

Obtenir un fichier PDF en réponse à un appel API
Ajoutez le code suivant à votre fichier de contrôleur, il utilise IronPDF pour créer un fichier PDF et le renvoyer comme réponse à l'appel API.
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");
}
}
}Imports Microsoft.AspNetCore.Mvc
Imports IronPdf
Namespace WebApplication8.Controllers
<ApiController>
<Route("[controller]")>
Public Class WeatherForecastController
Inherits ControllerBase
Private Shared ReadOnly Summaries() As String = { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" }
Private ReadOnly _logger As ILogger(Of WeatherForecastController)
Public Sub New(ByVal logger As ILogger(Of WeatherForecastController))
_logger = logger
End Sub
<HttpGet(Name := "GetWeatherForecast")>
Public Function GetWeatherForecastPdf() As IActionResult
Dim 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>"
Dim forecasts = Enumerable.Range(1, 5).Select(Function(index) New WeatherForecast With {
.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
For Each forecast In forecasts
htmlContent &= $"
<tr>
<td>{forecast.Date.ToShortDateString()}</td>
<td>{forecast.TemperatureC}</td>
<td>{forecast.Summary}</td>
</tr>"
Next forecast
htmlContent &= "
</table>
</body>
</html>"
' Convert the HTML string to a PDF using IronPDF
Dim renderer = New ChromePdfRenderer()
Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
' Retrieve the byte array of the generated PDF
Dim pdfBytes = pdfDocument.BinaryData
' Return the PDF file to the client
Return File(pdfBytes, "application/pdf", "WeatherForecast.pdf")
End Function
End Class
End Namespace
Téléchargez et ouvrez le fichier PDF joint.

Conclusion
OpenAPI, anciennement connu sous le nom de Swagger, simplifie la conception et la documentation des API RESTful dans l'écosystème .NET via des bibliothèques telles que Swashbuckle, facilitant la génération automatique de documentation API pour les projets ASP.NET Core. En démontrant la synergie entre OpenAPI et IronPDF, nous avons montré comment utiliser les capacités d'IronPDF pour générer des fichiers PDF à partir de contenu HTML et les renvoyer comme réponses API, enrichissant la fonctionnalité des applications ASP.NET. En adoptant les normes OpenAPI et en tirant parti des fonctionnalités robustes d'IronPDF, les développeurs peuvent améliorer leurs pratiques de documentation API et offrir aux utilisateurs des applications soignées et riches en fonctionnalités.
Pour des informations détaillées sur la licence IronPDF, veuillez vous référer aux détails de licence IronPDF. De plus, vous pouvez explorer notre didacticiel de conversion HTML en PDF pour plus de conseils.

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, la transformant aux côtés du PDG Cameron Rimington en une entreprise de plus de 50 personnes au service de la NASA, de Tesla et d'agences gouvernementales mondiales.
Articles connexes


