Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
Dit is niet de nieuwste versie van dit artikel. Zie de .NET 10-versie van dit artikel voor de huidige release.
Waarschuwing
Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie het .NET- en .NET Core-ondersteuningsbeleid voor meer informatie. Zie de .NET 10-versie van dit artikel voor de huidige release.
Door James Newton-King
OpenAPI (Swagger) is een taalagnostische specificatie voor het beschrijven van REST API's. gRPC JSON-transcodering ondersteunt het genereren van OpenAPI op basis van transcoded RESTful-API's. Het Microsoft.AspNetCore.Grpc.Swagger pakket:
- Integreert gRPC JSON-transcodering met Swashbuckle.
- Is experimenteel in .NET 7, zodat we de beste manier kunnen verkennen om OpenAPI-ondersteuning te bieden.
Get started
OpenAPI met gRPC JSON-transcodering inschakelen:
- Stel gRPC JSON-transcodering in door de instructies voor aan de slag te volgen.
- Voeg een pakketreferentie toe aan
Microsoft.AspNetCore.Grpc.Swagger. De versie moet 0.3.0-xxx of hoger zijn. - Configureer Swashbuckle bij het opstarten. De
AddGrpcSwaggermethode configureert Swashbuckle om gRPC-eindpunten op te nemen.
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();
Opmerking
Zie voor richtlijnen over het toevoegen van pakketten aan .NET-apps de artikelen onder Pakketten installeren en beheren in de Package consumption workflow (NuGet-documentatie). Bevestig de juiste pakketversies op NuGet.org.
OpenAPI-beschrijvingen toevoegen vanuit .proto opmerkingen
OpenAPI-beschrijvingen genereren op basis van opmerkingen in het .proto contract, zoals in het volgende voorbeeld:
// 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;
}
GRPC OpenAPI-opmerkingen inschakelen:
- Schakel het XML-documentatiebestand in het serverproject in met
<GenerateDocumentationFile>true</GenerateDocumentationFile>. - Configureren
AddSwaggerGenom het gegenereerde XML-bestand te lezen. Geef het XML-bestandspad door aanIncludeXmlCommentsenIncludeGrpcXmlComments, zoals in het volgende voorbeeld:
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);
});
Als u wilt controleren of Swashbuckle OpenAPI genereert met beschrijvingen voor de RESTful gRPC-services, start u de app en gaat u naar de pagina Swagger UI: