Le choix du style architectural de l’API dépend des exigences en matière d’évolutivité, de vitesse, de flexibilité, de compatibilité et des spécificités des consommateurs de l'API.
// Description du protocole service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {} } // Implémentation func (s *server) SayHello(ctx context.Context, req *pb.HelloRequest) (*pb.HelloReply, error) { return &pb.HelloReply{Message: "Hello " + req.Name}, nil }
Peut-on utiliser GraphQL pour remplacer tous les API REST ou gRPC ?
Non, GraphQL n'est pas toujours rationnel - il complique le cache, la journalisation, rend la protection de l’API plus difficile et peut être excessif pour des tâches simples où REST ou gRPC sont plus simples et plus fiables.
REST peut-il garantir un typage strict ?
Uniquement partiellement. REST est défini par la cohérence des contrats (Swagger/OpenAPI), mais par nature, il fonctionne avec des formats non stricts (JSON/HTTP), tandis que gRPC assure un typage statique robuste grâce au schéma Protobuf.
Dans quels cas gRPC n'est-il pas recommandé pour des API publiques ?
gRPC est moins compatible avec les navigateurs et s'intègre mal avec l'infrastructure HTTP/1.1 (par exemple, les proxies, les pare-feu). Pour les API web publiques, REST ou GraphQL sont préférables.