GraphQL
Что это
GraphQL — это язык запросов и манипулирования данными для API, а также среда для выполнения этих запросов.
Как она работает
Клиент при работе с GraphQL API совершенно не важно, откуда поступают данные, которые он запрашивает.
Он просто делает запрос в нужном ему объеме, а сервер GraphQL возвращает результат. Поэтому можно
представить, что схема — это контракт между API и клиентом, так как, прежде чем клиент выполнит
какой-либо запрос, этот запрос валидируется в соответствии со схемой данного API.
Сравнение с REST
REST
- Под каждый запрос нужен эндпоинт.
- Backend решает какие данные выдавать.
- Нет строгого контракта.
- Обработка ошибок через коды ответа.
GraphQL
- 1 POST эндпоинт.
- Client решает, какие данные запросить.
- Контракт диктует схемой.
- Код ответа всегда 200. Обработка ошибок через тело ответа.
Минусы
- Не безопасно - клиент может запросить любые данные и любых размеров(DOS attack). Нужно это конфигурировать.
- Редиректы, кеширование и ретраи - создают большие сложности.