Хватит использовать REST для API!
Технологии прогрессируют быстро и даже для лучших из них появляются альтернативы. Разбираем преимущества и недостатки REST и GraphQL, чтобы выбрать лучший вариант. Обсудить REST – широко распространенная технология передачи данных по протоколу HTTP, которая до недавнего времени была де-факто стандартом веб-разработки. Однако развитие интернета не стоит на месте и у старичка появился конкурент – GraphQL. В этой статье мы рассмотрим преимущества и ограничения обеих технологий: попробуем решить, какую же из них выбрать. REST (Representational State Transfer) – это стиль проектирования API, буквально обозначающий передачу состояния представления. Веб-службы REST используют для передачи и получения информации предопределенный набор операций, включая Основная идея REST очень проста – на URL-адрес ресурса отправляется запрос определенного типа и формата, на который приходит ответ с нужными данными (обычно в формате JSON). GraphQL использует другой стиль проектирования API – все рассматривается как граф, в котором данные взаимосвязаны. Это означает, что запрос можно настроить таким образом, чтобы из одной конечной точки получить всю необходимую информацию – и ничего больше. Таким образом можно даже объединять в одном запросе разные сущности. Предположим, что мы разрабатываем профиль пользователя с лентой его сообщений и списком подписчиков. Для этого нужно получить информацию о пользователе (как минимум его имя), посты этого автора, а также массив его подписчиков. Если мы используем архитектуру REST, то придется сделать несколько запросов (2-3): Скорее всего полученные в каждом случае данные будут избыточны. Например, в первом запросе кроме имени мы получим еще много ненужной информации о пользователе. Здесь и проявляется вся мощь GraphQL. В запросе мы можем указать точный набор нужных данных, например, вот так: И в ответ получим именно то, чего ожидаем. Очень просто и чисто. Пора подвести итог противостояния. Для этого сравним оба стиля по основным параметрам: У REST есть проблемы с комплектацией: получаемые из конечной точки данные часто бывают избыточными или неполными. У GraphQL этого недостатка нет. В REST-архитектуре структуру ответа определяет сервер, а в GraphQL – клиентский код. REST использует кэширование ответов по умолчанию, в то время как GraphQL не имеет системы автоматического кэширования. Однако существуют различные клиенты GraphQL (Apollo, Relay), которые предоставляют эту возможность. В REST обработка ошибок намного проще. GraphQL обычно возвращает статус 200 OK даже с ошибкой, но при использовании специальных клиентов эта проблема легко решается. *** Преимущества GraphQL перед REST очевидны, однако это не всегда лучший вариант для вашего приложения. Выбирая технологию, учитывайте особенности проекта: сложность, размер, потенциальное расширение и организацию процесса разработки.Что такое REST?
GET
, POST
, PUT
и DELETE
, и не сохраняют состояние приложения. Преимущества REST
Ограничения REST
Что такое GraphQL?
Преимущества GraphQL
Ограничения GraphQL
Простой пример для сравнения
REST-реализация
/user/<id>
– для получения сведений о пользователе./user/<id>/posts
– для получения списка сообщений, опубликованных этим пользователем./user/<id>/followers
– для получения списка подписчиков.GraphQL-реализация
query { User(id: '123') { name posts { title } followers { name } } }
GraphQL vs REST
1. Получение данных
2. Структура ответа
3. Автоматическое кэширование
4. Обработка ошибок
- 12 views
- 0 Comment