Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z aktualną wersją, zobacz artykuł w wersji .NET 10.
Ostrzeżenie
Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz zasady pomocy technicznej platformy .NET i platformy .NET Core. Aby zapoznać się z aktualną wersją, zobacz artykuł w wersji .NET 10.
Autor: James Newton-King
OpenAPI (Swagger) to niezależna od języka specyfikacja do opisywania REST interfejsów API. Transkodowanie gRPC JSON obsługuje generowanie interfejsu OpenAPI z transkodowanych interfejsów API RESTful. Pakiet Microsoft.AspNetCore.Grpc.Swagger :
- Integruje transkodowanie gRPC JSON z pakietem Swashbuckle.
- Jest eksperymentalny na platformie .NET 7, aby umożliwić nam zapoznanie się z najlepszym sposobem zapewnienia obsługi interfejsu OpenAPI.
Wprowadzenie
Aby włączyć interfejs OpenAPI z transkodowaniem JSON gRPC:
- Skonfiguruj transkodowanie gRPC JSON, postępując zgodnie z instrukcjami wprowadzającymi.
- Dodaj odwołanie do pakietu do
Microsoft.AspNetCore.Grpc.Swagger. Wersja musi być 0.3.0-xxx lub nowsza. - Skonfiguruj pakiet Swashbuckle podczas uruchamiania. Metoda
AddGrpcSwaggerkonfiguruje pakiet Swashbuckle tak, aby zawierał punkty końcowe 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();
Uwaga
Aby uzyskać instrukcje dodawania pakietów do aplikacji .NET, zobacz artykuły w sekcji Instalowanie pakietów i zarządzanie nimi w temacie Przepływ pracy użycia pakietów (dokumentacja programu NuGet). Sprawdź prawidłowe wersje pakietów pod adresem NuGet.org.
Dodawanie opisów interfejsu OpenAPI z .proto komentarzy
Wygeneruj opisy interfejsu OpenAPI na podstawie komentarzy w umowie .proto , jak w poniższym przykładzie:
// 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;
}
Aby włączyć komentarze gRPC OpenAPI:
- Włącz plik dokumentacji XML w projekcie serwera za pomocą polecenia
<GenerateDocumentationFile>true</GenerateDocumentationFile>. - Skonfiguruj
AddSwaggerGen, aby odczytać wygenerowany plik XML. Przekaż ścieżkę pliku XML doIncludeXmlCommentsiIncludeGrpcXmlComments, jak pokazano w poniższym przykładzie:
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);
});
Aby potwierdzić, że pakiet Swashbuckle generuje interfejs OpenAPI z opisami dla usług GRPC RESTful, uruchom aplikację i przejdź do strony interfejsu użytkownika struktury Swagger: