При просмотре GithubAPI я обнаружил, что API github был обновлен до V4 и называетсяGraphQL API v4. Не могу не удивиться, что это за штуковина.
Что такое GraphQL
GraphQL (Graph Query Language): GraphQL — это язык запросов для API, среда выполнения на стороне сервера, которая выполняет запросы с использованием системы на основе типов (система типов определяется вашими данными).
GraphQL — это язык, разработанный специально для запросов API. Его можно сравнить с SQL.Этот тип языка называется DSL (domain-specific language), который переводится на предметно-ориентированный язык.
Почему Github выбрал GraphQL? Потому что GraphQL имеет следующие преимущества:
- большая гибкость
- Возможность точно определить, какие данные необходимы (GraphQL имеет строгую типизацию)
- Возвращайте только те данные, которые вам нужны (избегайте избыточности данных)
- GraphQL позволяет заменить несколько запросов REST одним вызовом для получения указанных данных.
Поместите картинку с картинки, чтобы проиллюстрировать рабочий процесс:
Похоже на оригинальный REST API.
Да, общий рабочий процесс такой, но GraphQL как язык имеет много концепций и синтаксиса. Но я не хочу быть переписчиком официальных документов, а как руководство для официальных документов, конкретные понятия и грамматика могут пойти в
Китайская сеть GraphQLучиться.
Я полагаю, вам не нравится видеть слишком много незнакомых понятий сразу. Давайте учиться по ходу дела.
Предварительное исследование
github предоставляетGraphQL ExplorerВ помощь изучению GraphQL
небольшой случай
ОткрытымGraphQL ExplorerЗдесь мы сначала запускаем следующий код:
query {
viewer {
login
}
}
Этот код может запрашивать ваше имя пользователя на github. Обратите внимание: сначала войдите в систему.
Результат моего бега:
{
"data": {
"viewer": {
"login": "smarxpan"
}
}
}
Здесь вы можете задаться вопросом, почему интерфейс может быть запрошен таким образом, и какая магия происходит?
Откройте программное обеспечение для захвата пакетов, давайте возьмем пакет и посмотрим.
Приведенный выше запрос, на самом деле, отправленный контент по-прежнему является json:
{
"query": "query { \n viewer { \n login\n }\n}",
"variables": {}
}
Никакой магии тут нет, мы видим, что содержимое кода отправляется на сервер как значение параметра запроса, сервер разбирает его по грамматике, а потом возвращает нужное нам значение.
Подробное объяснение мелких случаев
query {
viewer {
login
}
}
Первое предложение этого абзаца:query
В GraphQL есть два вида операций: запрос и мутация. запрос означает запрос, мутация — изменение. Запрос предназначен для запроса данных, а изменение соответствует POST/PATCH/DELETE REST API.
Методы запросов, используемые в этих двух операциях, — это post, а запросы get обычно не используются в GraphQL.
Структура запроса похожа:
query {
JSON objects to return
}
Его внутреннее определение — это json-структура возвращаемых данных.
Руководство по обучению и использованию
Лучший пример, конечноРуководства Github по GraphQL, есть примеры и исполняемые файлы, и каждый фрагмент кода в нем можно щелкнуть в проводнике для запуска.
Изучение грамматики по-прежнему рекомендует китайский веб-сайт GraphQL:Начало работы с GraphQL
Также есть блог, который я считаю очень хорошим, это великий бог работы с Leetcode.Десять проблем, которые удерживают вас от GraphQL
И реальная польза от работы, конечно, без использования библиотеки не обойтись
Текущие основные языки разработки имеют конкретные реализации, в зависимости от того, какой язык вы используете, выберите свою собственную библиотеку разработки для использования.
Эпилог
Новые технологии, несомненно, интересны, и GraphQL действительно решает многие болевые точки, если проект не имеет исторической нагрузки, то это можно сделать. Github — крупнейший в мире сайт однополых знакомств, и считается, что использование им этого языка в API способствует прогрессу отрасли, и обучение окончено.