GraphQL конспект
GraphQL не привязан к какой-либо конкретной БД или механизму хранения, поддерживаясь, вместо этого, существующим кодом и данными.
Служба GraphQL создается путем определения типов и полей этих типов, а затем предоставления функций для каждого поля этих типов.
Основное отличие от REST в том, что каждый ресурс можно получить по URL(entrypoint), в то время как в GraphQL все ресурсы извлекаются(обычно) из одной точки с помощью запросов, описанных на SDL(GraphQL).
Пример: В файле "schema.graphql" определим следующий тип:
type Query {
hello: String!
}type Query блок объявляет тип, hello - это определение поля, String - это тип возвращаемого значения, а следующий на ним восклицательный знак означает, что возвращаемое значение никогда не будет null.
Резолверы - это функции, являющиеся посредниками между потребителями 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Запросы нужны для чтения данных (GET-запросы).
Мутации нужны для полноценной реализации CRUD(create, update and delete) функций.