Documentazione sulla transcodifica JSON gRPC con Swagger/OpenAPI
Nota
Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 8 di questo articolo.
Avviso
Questa versione di ASP.NET Core non è più supportata. Per altre informazioni, vedere Criteri di supporto di .NET e .NET Core. Per la versione corrente, vedere la versione .NET 8 di questo articolo.
Importante
Queste informazioni si riferiscono a un prodotto non definitive che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Per la versione corrente, vedere la versione .NET 8 di questo articolo.
OpenAPI (Swagger) è una specifica indipendente dal linguaggio per la descrizione delle REST API. La transcodifica JSON gRPC supporta la generazione di OpenAPI da API RESTful transcodificate. Il pacchetto Microsoft.AspNetCore.Grpc.Swagger
:
- Integra la transcodifica JSON gRPC con Swashbuckle.
- È sperimentale in .NET 7 per consentire di esplorare il modo migliore per fornire il supporto OpenAPI.
Operazioni preliminari
Per abilitare OpenAPI con la transcodifica JSON gRPC:
- Aggiungere un riferimento al pacchetto a
Microsoft.AspNetCore.Grpc.Swagger
. La versione deve essere 0.3.0-xxx o successiva. - Configurare Swashbuckle all'avvio. Il
AddGrpcSwagger
metodo configura Swashbuckle per includere gli endpoint gRPC.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddGrpc().AddJsonTranscoding();
builder.Services.AddGrpcSwagger();
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1",
new OpenApiInfo { Title = "gRPC transcoding", Version = "v1" });
});
var app = builder.Build();
app.UseSwagger();
if (app.Environment.IsDevelopment())
{
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
}
app.MapGrpcService<GreeterService>();
app.Run();
Nota
Per indicazioni sull'aggiunta di pacchetti alle app .NET, vedere gli articoli sotto Installare e gestire pacchetti in Flusso di lavoro dell'utilizzo di pacchetti (documentazione di NuGet). Confermare le versioni corrette del pacchetto all'indirizzo NuGet.org.
Aggiungere descrizioni OpenAPI dai .proto
commenti
Generare descrizioni OpenAPI dai commenti nel .proto
contratto, come nell'esempio seguente:
// My amazing greeter service.
service Greeter {
// Sends a greeting.
rpc SayHello (HelloRequest) returns (HelloReply) {
option (google.api.http) = {
get: "/v1/greeter/{name}"
};
}
}
message HelloRequest {
// Name to say hello to.
string name = 1;
}
message HelloReply {
// Hello reply message.
string message = 1;
}
Per abilitare i commenti OpenAPI gRPC:
- Abilitare il file di documentazione XML nel progetto server con
<GenerateDocumentationFile>true</GenerateDocumentationFile>
. - Configurare
AddSwaggerGen
per leggere il file XML generato. Passare il percorso del file XML aIncludeXmlComments
eIncludeGrpcXmlComments
, come nell'esempio seguente:
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1",
new OpenApiInfo { Title = "gRPC transcoding", Version = "v1" });
var filePath = Path.Combine(System.AppContext.BaseDirectory, "Server.xml");
c.IncludeXmlComments(filePath);
c.IncludeGrpcXmlComments(filePath, includeControllerXmlComments: true);
});
Per verificare che Swashbuckle generi OpenAPI con descrizioni per i servizi RESTful gRPC, avviare l'app e passare alla pagina dell'interfaccia utente di Swagger: