Выбор архитектурного стиля API зависит от типа потребителей, объёма данных, требований к скорости развития интерфейса и масштабируемости.
Пример REST контроллера (Node.js/Express):
app.get('/api/users/:id', function(req, res) { // ... res.json(user); });
Пример gRPC определения сервиса (protobuf):
service UserService { rpc GetUser (UserRequest) returns (UserResponse); }
Пример запроса на GraphQL:
query { user(id: "123") { id name posts { title } } }
Ключевые особенности:
Можно ли использовать GraphQL для любых корпоративных API?
Не всегда! GraphQL хорош для сложных агрегированных данных, но для простых CRUD-интерфейсов и высокой нагрузки REST зачастую проще и эффективнее.
gRPC подходит для мобильных/веб-клиентов?
Обычно нет, gRPC требует поддержки HTTP/2 и не интегрируется с браузерами без специальных прокси, поэтому на фронте его используют редко.
REST API всегда легче для версиирования, чем остальные?
Не обязательно. Версионирование GraphQL решается на уровне схемы, а REST обычно через изменение URI или заголовков, что не всегда удобно для эволюции сложной схемы данных.