Краткий обзор, чтобы вы начали

Захват данных из конечной точки API может быть простым, если вам нужна всего пара битов от нее. Но он может быстро усложниться, поэтому, если вы хотите попытаться организовать что-то, GraphQL может быть тем, над чем вы начали.

Проблемы с традиционными REST API

JSONPlaceholder - это API, с помощью которого вы можете получать поддельные данные. С их /users конечной точки вы можете просто получить имя пользователя и его адрес электронной почты. А как насчет того, чтобы найти более сложный API, и вам нужно больше, чем просто пара значений? Было бы намного больше данных, намного больше конечных точек и, следовательно, гораздо больше запросов, которые нужно было бы сделать!

Множественные запросы в действии

Примером этого является получение данных из API, в котором есть информация о книгах. Если бы вы передали имя книги в конечной точке example.com/api/books/:title, вы бы получили данные об этой книге, такие как bookId, authorId, genre и blurb.

Если вы хотите получить информацию об авторе, вам придется сделать еще один запрос, который вводит идентификатор автора в конечную точку example.com/api/authors/:authorId. Вы получите необходимую информацию, но для этого потребуется два запроса, что утомительно и, учитывая гораздо большее количество запросов, может быть трудным для понимания или отслеживания. Вот где сияет GraphQL!

Что такое GraphQL?

GraphQL - это язык запросов для API, разработанный Facebook. Это позволяет разработчикам создавать более понятные API и упрощает получение данных из них. Это также среда выполнения на стороне сервера для выполнения запросов. Для тех, кто хотел бы описать тип данных, которые они должны получить обратно, GraphQL также использует для этого типизацию! На примере книжного API это будет выглядеть так:

Каковы преимущества использования GraphQL?

Вы заметили, что в приведенном выше фрагменте кода мы передаем идентификатор автора? Это потому, что с GraphQL мы можем запросить столько данных, сколько нам нужно, за один запрос! Учитывая authorId, который мы получили из этой книги, мы можем передать его в нашем запросе, а также получить из него данные. Если бы у автора был еще один набор идентификаторов, мы могли бы получить данные и от них! Прелесть GraphQL в том, что легко отправить запрос за один раз, который легче читать и понимать.

Мы также можем избирательно подходить к полученным данным. Если нам не нужны ни свойство blurb, ни свойство age из API, мы можем просто опустить его. Новый запрос будет выглядеть примерно так:

Эта специфика позволяет разработчикам быть более гибкими в своих запросах, а также экономит место для данных, которые им действительно нужны.

Один метод, одна конечная точка

Если вы используете GraphQL для своей собственной базы данных, это может помочь вам меньше беспокоиться о конечных точках. Часто вы будете иметь дело с разными запросами, такими как GET, POST, PUT и DELETE. Все это означает, что несколько запросов выполняют разные функции, но с GraphQL ваш запрос отправляется в одну конечную точку POST /graphql. В этой конечной точке есть вспомогательные функции, называемые «преобразователями», которые могут действовать в зависимости от того, что вам нужно делать с данными в вашем запросе.

Планирование конечных точек базы данных может быть сложной задачей, особенно если ваше приложение значительно масштабируется. Использование GraphQL может значительно упростить получение необходимых данных, не беспокоясь о конфликтах путей или увеличении длины конечных точек, чем они должны быть.

GraphQL - полезный инструмент, который делает запросы данных намного проще и понятнее. Тот факт, что его можно использовать на многих языках, означает, что вы можете использовать его для множества проектов с разными техническими стеками. Получите больше контроля с запрашиваемыми данными и попробуйте GraphQL!