Dokumentasi transcoding JSON gRPC dengan Swagger / OpenAPI
Catatan
Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.
Peringatan
Versi ASP.NET Core ini tidak lagi didukung. Untuk informasi selengkapnya, lihat Kebijakan Dukungan .NET dan .NET Core. Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.
Penting
Informasi ini berkaitan dengan produk pra-rilis yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.
Oleh James Newton-King
OpenAPI (Swagger) adalah spesifikasi agnostik bahasa untuk menjelaskan REST API. Transcoding JSON gRPC mendukung pembuatan OpenAPI dari API RESTful yang ditranskodekan. Paket Microsoft.AspNetCore.Grpc.Swagger
:
- Mengintegrasikan transcoding GRPC JSON dengan Swashbuckle.
- Bersifat eksperimental di .NET 7 untuk memungkinkan kami menjelajahi cara terbaik untuk memberikan dukungan OpenAPI.
Memulai
Untuk mengaktifkan OpenAPI dengan transcoding JSON gRPC:
- Tambahkan referensi paket ke
Microsoft.AspNetCore.Grpc.Swagger
. Versi harus 0.3.0-xxx atau yang lebih baru. - Konfigurasikan Swashbuckle dalam startup. Metode ini
AddGrpcSwagger
mengonfigurasi Swashbuckle untuk menyertakan titik akhir 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();
Catatan
Untuk panduan tentang menambahkan paket ke aplikasi .NET, lihat artikel di bagian Menginstal dan mengelola paket di Alur kerja konsumsi paket (dokumentasi NuGet). Konfirmasikan versi paket yang benar di NuGet.org.
Menambahkan deskripsi OpenAPI dari .proto
komentar
Hasilkan deskripsi OpenAPI dari komentar dalam .proto
kontrak, seperti dalam contoh berikut:
// 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;
}
Untuk mengaktifkan komentar gRPC OpenAPI:
- Aktifkan file dokumentasi XML dalam proyek server dengan
<GenerateDocumentationFile>true</GenerateDocumentationFile>
. - Konfigurasikan
AddSwaggerGen
untuk membaca file XML yang dihasilkan. Teruskan jalur file XML keIncludeXmlComments
danIncludeGrpcXmlComments
, seperti dalam contoh berikut:
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);
});
Untuk mengonfirmasi bahwa Swashbuckle membuat OpenAPI dengan deskripsi untuk layanan RESTful gRPC, mulai aplikasi dan navigasikan ke halaman antarmuka pengguna Swagger:
Sumber Daya Tambahan:
ASP.NET Core