GraphQL and/or REST
Eugene Zharkov
REST
Level 0
Level 1
POST http://foo.com/api/
{ user: { name: “John”, surname: “Week” } }
POST http://foo.com/api/users/938
{ user: { name: “John”, surname: “Week” } }
REST
Level 2
GET http://foo.com/api/users/938/posts
DELETE http://foo.com/api/users/938
PUT http://foo.com/api/items/39
{ { age: 25 } }
REST
[
{ rel: ‘search.users’, uri: ‘/search/users’ },
{ rel: ‘users.block’, uri: ‘/users/938/block’ }
]
Level 3
GET http://foo.com/api/users/938/
GraphQL
GET api/books/938
GET api/authors/432
GET /graphql?query={ book(id: "1") { title, author { firstName } } }
GET api/books/432/comments
Sharing data in a Microservices Architecture using GraphQL
GraphQL
GitHub GraphQL API
https://developer.github.com/v4/explorer/
Скажи что-то по-GraphQL’ски
Enum
Order
Limit
Where IN
Fragment
(inline)
Скажи что-то по-GraphQL’ски
Variable
Declaration
Variable
Usage
Variable
Value
Скажи что-то по-GraphQL’ски
á la PUT
Скажи что-то по-GraphQL’ски
Helper
Validation
https://graphql.github.io/learn/
NINJA
GraphQL
REST
MORMON
Pros & Cons
REST
Project Manager
Frontend Developer
API Developer
Mobile Developer
Добавь новое
поле в API
Запили мне
новый endpoint
Вас много, а я
одна
Ребята, мы же
одна дружная
команда
А где DELETE
для entity?
Backend Developer
• Вся ответственность за API лежит на разработчике

• Данные API могут быть избыточными или
недостаточными

• Регулярные запросы на расширение ответа API или
добавления нового endpoint’а.
Pros & Cons
GraphQL
• Разработчик API старается предоставить
максимальный набор данных.

• Разработчик клиента сам формирует требуемые
запросы.

• Больше ответственности, увеличивается время на
разработку клиента.

• Удобный интерфейс для тестирования запросов.

• При возникновении проблем, разработчик API должен
знать, какой запрос вы отправляете*
Pros & Cons
Questions?
eu.zharkov@gmail.com

@2j2e

GraphQL для FrontEnd разработчика