[Интерфейсы, API] Graphql
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
GraphQL — это язык запросов к API-интерфейсам. Он отображает предоставляемые сервером данные, чтобы клиент смог выбрать именно то, что ему нужно, не получая все данные.
Если кратко, то GraphQL — это синтаксис, который описывает как запрашивать данные, и, в основном, используется клиентом для загрузки данных с сервера. GraphQL имеет три основные характеристики:
- Позволяет клиенту точно указать, какие данные ему нужны.
- Облегчает агрегацию данных из нескольких источников.
- Использует систему типов для описания данных.
Для использования GraphQL, установим пакет graphql с помощью команд:
yarn add graphql, если используете менеджер пакетов yarn
npm i graphql --save, для менеджера пакетов npm
Типы данных
GraphQL из коробки содержит набор стандартных скалярных типов:
- Int: целое число.
- Float: Подписанное число с плавающей точкой двойной точности.
- String: Строка в UTF-8.
- Boolean:true или false.
- ID: представляет уникальный идентификатор, обычно используемый для переполучения объекта или как ключ кеша. Тип ID сериализован так же, как String; однако, определение его как ID подразумевает, что он не должен быть распознан людьми.
Также имеется возможность создавать собственные типы с помощью ключевого слова type:
type User {
id: ID!
name: String!
email: String
}
Перечисления (Enums)
Перечисления — особый вид скалярных типов, который может содержать только значение из определенного набора значений. Это позволяет вам:
- Проверять, что любые аргументы этого типа содержат разрешенное значение
- Сообщить через систему типов, что поле будет всегда содержать одно из конечного множества значений
Пример enums:
enums Roles {
Admin
User
}
Интерфейсы
Как и многие системы, GraphQL поддерживает интерфейсы. Интерфейс — это тип абстракции, который включает определенный набор полей, которые тип должен включить для внедрения интерфейса. Интерфейсы полезны, когда вы хотите вернуть объект или набор объектов, но они могут быть различных типов.
Пример интерфейса:
interface User {
id: ID!
name: String!
email: String
}
Запросы(Queries)
Запросы GraphQL — это сущности, представляющие собой запрос к серверу на получение неких данных. За этими данными мы и обращаемся к серверу, выполняя запрос. При использовании традиционных REST API наш запрос принимает вид GET-запроса.
Пример запроса:
query {
allUsers {
id
name
}
}
Мутации (Mutations)
Если запросы (queries) в GraphQL выполняют загрузку данных, мутации ответственны за внесение в данные изменений.
Пример мутации:
mutation createUser($name: String!, $email: String) {
createUser(name: $name,email: $email) {
id
}
}
Объединённые типы (Union)
Типы Union очень похожи на интерфейсы, но не определяют общие поля между типами.
Когда возвращается тип из нашей схемы, мы можем получить несколько типов. Отметим, что члены типа union должны быть конкретными типами объекта; вы не можете создать тип union из интерфейса или других union.
union Result = Admin | User
Типы ввода (Input type)
GraphQL также позволяет с легкостью передать целые объекты. Это полезно в частности в случае мутаций, где вы можете захотеть передать данные в целом объекте. В GraphQL schema, типы ввода выглядят точно так же, как регулярные типы объектов, но с ключевым словом input вместо type:
input User {
name: String!
email: String
}
Псевдонимы (Aliases)
GraphQL позволяет в одном запросе вызывать несколько 'запросов':
{
admin: user(id: 1) {
name
}
user: user(id: 2) {
name
}
}
Фрагменты (Fragments)
Чтобы не дублировать однотипные структуры в запросах в GraphQL используются фрагменты.
fragment userFields on User {
name
email
}
admin: user(id: 1) {
...userFields
}
===========
Источник:
habr.com
===========
Похожие новости:
- [Мессенджеры, Python, API] Хардкорная разработка под Телеграм. Бот-модератор своими руками. Часть 1
- [Системное администрирование, PHP, Программирование, Разработка систем связи] Голосовое меню своими руками
- [JavaScript, API, TypeScript] TypedAPI: клиент-сервер для TypeScript
- [Гаджеты, Умный дом, DIY или Сделай сам, Голосовые интерфейсы] Открытие двери с телефона, голосовом ассистентом и с помощью модуля Sonoff Mini
- [PHP, API, CRM-системы] Заметки по API Aliexpress. Экспорт заказов в Bitrix24, RetailCRM, amoCRM
- [Оболочки, Интерфейсы] Fix Price запустил новое мобильное приложение с обновленным функционалом для клиентов
- [C++, Реверс-инжиниринг, Игры и игровые приставки, Лайфхаки для гиков] Как в Runescape ловят пользователей ботов, и почему они не поймали меня (перевод)
- [IT-инфраструктура, API, Облачные сервисы, Kubernetes] Масштабирование Kubernetes в Pinterest: через сбои и аварии (перевод)
- [JavaScript, Google API, GitHub] Google Sheets — как разноплановый помощник для непростых задач или как я делал анализатор футбольный матчей
- [Python, API, SQLite] Подключаем Sqlite3 к Telegram боту
Теги для поиска: #_interfejsy (Интерфейсы), #_api, #_graphql, #_api, #_interfejsy (интерфейсы), #_interfejsy (
Интерфейсы
), #_api
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:57
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
GraphQL — это язык запросов к API-интерфейсам. Он отображает предоставляемые сервером данные, чтобы клиент смог выбрать именно то, что ему нужно, не получая все данные. Если кратко, то GraphQL — это синтаксис, который описывает как запрашивать данные, и, в основном, используется клиентом для загрузки данных с сервера. GraphQL имеет три основные характеристики:
Для использования GraphQL, установим пакет graphql с помощью команд: yarn add graphql, если используете менеджер пакетов yarn npm i graphql --save, для менеджера пакетов npm Типы данных GraphQL из коробки содержит набор стандартных скалярных типов:
Также имеется возможность создавать собственные типы с помощью ключевого слова type: type User {
id: ID! name: String! email: String } Перечисления (Enums) Перечисления — особый вид скалярных типов, который может содержать только значение из определенного набора значений. Это позволяет вам:
Пример enums: enums Roles {
Admin User } Интерфейсы Как и многие системы, GraphQL поддерживает интерфейсы. Интерфейс — это тип абстракции, который включает определенный набор полей, которые тип должен включить для внедрения интерфейса. Интерфейсы полезны, когда вы хотите вернуть объект или набор объектов, но они могут быть различных типов. Пример интерфейса: interface User {
id: ID! name: String! email: String } Запросы(Queries) Запросы GraphQL — это сущности, представляющие собой запрос к серверу на получение неких данных. За этими данными мы и обращаемся к серверу, выполняя запрос. При использовании традиционных REST API наш запрос принимает вид GET-запроса. Пример запроса: query {
allUsers { id name } } Мутации (Mutations) Если запросы (queries) в GraphQL выполняют загрузку данных, мутации ответственны за внесение в данные изменений. Пример мутации: mutation createUser($name: String!, $email: String) {
createUser(name: $name,email: $email) { id } } Объединённые типы (Union) Типы Union очень похожи на интерфейсы, но не определяют общие поля между типами. Когда возвращается тип из нашей схемы, мы можем получить несколько типов. Отметим, что члены типа union должны быть конкретными типами объекта; вы не можете создать тип union из интерфейса или других union. union Result = Admin | User
Типы ввода (Input type) GraphQL также позволяет с легкостью передать целые объекты. Это полезно в частности в случае мутаций, где вы можете захотеть передать данные в целом объекте. В GraphQL schema, типы ввода выглядят точно так же, как регулярные типы объектов, но с ключевым словом input вместо type: input User {
name: String! email: String } Псевдонимы (Aliases) GraphQL позволяет в одном запросе вызывать несколько 'запросов': {
admin: user(id: 1) { name } user: user(id: 2) { name } } Фрагменты (Fragments) Чтобы не дублировать однотипные структуры в запросах в GraphQL используются фрагменты. fragment userFields on User {
name } admin: user(id: 1) { ...userFields } =========== Источник: habr.com =========== Похожие новости:
Интерфейсы ), #_api |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:57
Часовой пояс: UTC + 5