Saltar al contenido principal

C#

Empieza por la guía de gRPC para crear un token API de la plataforma y descargar platform.proto. Ejecuta los siguientes comandos desde el directorio que contiene ese archivo.

Crea un proyecto de consola .NET:

dotnet new console -n ReconstructExample

Entra en el directorio del proyecto:

cd ReconstructExample

Añade los paquetes del cliente gRPC:

dotnet add package Grpc.Net.Client
dotnet add package Grpc.Tools
dotnet add package Google.Protobuf

Copia el platform.proto descargado al directorio ReconstructExample.

Añade este elemento al archivo .csproj del proyecto. Grpc.Tools genera el cliente al compilar:

<ItemGroup>
<Protobuf Include="platform.proto" GrpcServices="Client" />
</ItemGroup>

Utiliza los tipos generados en Program.cs:

using Cr.Reconstruct.External.Grpc;
using Grpc.Core;
using Grpc.Net.Client;

var token = Environment.GetEnvironmentVariable("CR_RECONSTRUCT_API_TOKEN")
?? throw new InvalidOperationException("Set CR_RECONSTRUCT_API_TOKEN.");
var address = Environment.GetEnvironmentVariable("CR_RECONSTRUCT_GRPC_URL")
?? "https://reconstruct.dev";

using var channel = GrpcChannel.ForAddress(address);
var client = new PlatformService.PlatformServiceClient(channel);
var headers = new Metadata { { "authorization", $"Bearer {token}" } };
var page = await client.ListCatalogsAsync(
new ListCatalogsRequest { PageSize = 10 }, headers, deadline: DateTime.UtcNow.AddSeconds(10));

foreach (var catalog in page.Catalogs)
{
var detail = await client.GetCatalogAsync(
new GetCatalogRequest { CatalogId = catalog.CatalogId }, headers);
Console.WriteLine($"{detail.CatalogId}: {detail.Description}");
}

Ejecuta dotnet run. El canal gRPC nativo utiliza la autoridad HTTPS; no incluye la ruta REST /api/v1/platform.