Skip to content

Latest commit

 

History

History
42 lines (34 loc) · 2.67 KB

File metadata and controls

42 lines (34 loc) · 2.67 KB

GraphQL конспект

GraphQL - это язык запросов для вашего API и среда выполнения на стороне сервера для выполнения запросов с использованием системы типов, которую вы определяете для своих данных.

Введение

GraphQL не привязан к какой-либо конкретной БД или механизму хранения, поддерживаясь, вместо этого, существующим кодом и данными.

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

Основное отличие от REST в том, что каждый ресурс можно получить по URL(entrypoint), в то время как в GraphQL все ресурсы извлекаются(обычно) из одной точки с помощью запросов, описанных на SDL(GraphQL).

Пример: В файле "schema.graphql" определим следующий тип:

type Query {
    hello: String!
}

type Query блок объявляет тип, hello - это определение поля, String - это тип возвращаемого значения, а следующий на ним восклицательный знак означает, что возвращаемое значение никогда не будет null.

Резолверы (resolvers)

Резолверы - это функции, являющиеся посредниками между потребителями API и бизнес-логикой приложения или же обычные views из MVC. Пример:

from ariadne import QueryType

query = QueryType()

@query.field("hello")
def resolve_hello(_, info):
    request = info.context["request"]
    user_agent = request.headers.get("user-agent", "guest")
    return "Hello, %s!" % user_agent

Запросы (query)

Запросы нужны для чтения данных (GET-запросы).

Мутации (mutations)

Мутации нужны для полноценной реализации CRUD(create, update and delete) функций.

Хорошая статья, в которой собраны самые популярные пакеты для работы с GraphQL в Python