Ответ
gRPC и REST — это два разных подхода к API.
REST — это архитектурный стиль, работающий поверх HTTP/1.1, использует JSON/XML для передачи данных. Он прост, человекочитаем и кэшируем, но может быть медленным из-за текстовых форматов.
gRPC — это фреймворк RPC от Google, работающий поверх HTTP/2. Использует бинарный Protocol Buffers (Protobuf) для сериализации, что делает его быстрее и компактнее. Поддерживает двунаправленные стримы (streaming).
Пример gRPC (Protobuf):
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
Ключевые отличия:
- Протокол: HTTP/1.1 (REST) vs HTTP/2 (gRPC)
- Формат данных: JSON/XML (REST) vs Protobuf (gRPC)
- Производительность: gRPC быстрее из-за бинарного формата
- Поддержка стримов: только gRPC
- Инструменты: REST проще для отладки (curl), gRPC требует генерации кода