Requêtes
gRPC dynamique
Server reflection, import .proto sans protoc, DynamicMessage et les quatre types de streaming.
# Découverte de schéma
Zapi est un client gRPC dynamique : aucun type généré n’est nécessaire. Le schéma vient soit de la server reflection, soit d’un fichier .proto compilé à la volée par protox (sans protoc).
name: Echo unary
kind: grpc
url: "https://grpcb.in:9001"
grpcService: grpcbin.GRPCBin
grpcMethod: DummyUnary
body:
type: json
content: |
{ "fString": "salut zapi" }# Import .proto
syntax = "proto3";
package echo;
service EchoService {
rpc Echo (EchoRequest) returns (EchoReply);
rpc Stream (EchoRequest) returns (stream EchoReply);
}
message EchoRequest { string text = 1; }
message EchoReply { string text = 1; int64 received_at = 2; }À l’import, Zapi construit un pool de descripteurs, liste les services et méthodes, puis génère un squelette JSON pour le message d’entrée.
# Streaming
| Type d’appel | Comportement |
|---|---|
| Unary | Un message de requête, une réponse. |
| Server streaming | Une requête, plusieurs messages entrants. |
| Client streaming | Plusieurs messages sortants, une réponse. |
| Bidirectionnel | Messages entrants et sortants en parallèle. |
Les réponses sont décodées en JSON via prost_reflect::DynamicMessage, ce qui garde une interface lisible même sans code généré.