Документация по транскодированию gRPC JSON с помощью Swagger / OpenAPI
Автор: Джеймс Ньютон-Кинг (James Newton-King)
OpenAPI (Swagger) — это не зависящая от языка спецификация для описания REST API. Транскодирование gRPC JSON поддерживает создание OpenAPI из транскодированных RESTAPI-интерфейсов ful. Пакет Microsoft.AspNetCore.Grpc.Swagger
обладает следующими характеристиками:
- Интегрирует перекодирование gRPC JSON с помощью Swashbuckle.
- Является экспериментальным в .NET 7, чтобы позволить нам изучить лучший способ обеспечить поддержку OpenAPI.
Начало работы
Чтобы включить OpenAPI с перекодированием gRPC JSON, выполните приведенные действия.
- Добавьте ссылку на пакет для
Microsoft.AspNetCore.Grpc.Swagger
. Версия должна быть 0.3.0-xxx или более поздней. - Настройте Swashbuckle в коде запуска. Метод
AddGrpcSwagger
позволяет настроить Swashbuckle для включения конечных точек 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();
Примечание.
Рекомендации по добавлению пакетов в приложения .NET см. в разделе Способы установки пакетов NuGet в статье Рабочий процесс использования пакета (документация по NuGet). Проверьте правильность версий пакета на сайте NuGet.org.
Добавление описаний OpenAPI из .proto
комментариев
Создайте описания OpenAPI из комментариев в контракте .proto
, как показано в следующем примере:
// 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, выполните приведенные действия.
- Включите XML-файл документации в серверном проекте с помощью
<GenerateDocumentationFile>true</GenerateDocumentationFile>
. - Настройте
AddSwaggerGen
на считывание созданного XML-файла. Передайте путьIncludeXmlComments
к XML-файлу иIncludeGrpcXmlComments
, как показано в следующем примере:
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);
});
Чтобы убедиться, что Swashbuckle создает OpenAPI с описанием RESTслужб ful gRPC, запустите приложение и перейдите на страницу пользовательского интерфейса Swagger:
Дополнительные ресурсы
ASP.NET Core
Кері байланыс
https://aka.ms/ContentUserFeedback.
Жақында қолжетімді болады: 2024 жыл бойы біз GitHub Issues жүйесін мазмұнға арналған кері байланыс механизмі ретінде біртіндеп қолданыстан шығарамыз және оны жаңа кері байланыс жүйесімен ауыстырамыз. Қосымша ақпаратты мұнда қараңыз:Жіберу және пікірді көру