GraphQL — это язык запросов для API и среда выполнения для этих запросов с существующими данными. В отличие от REST, GraphQL:
Graphene — это библиотека для Python, которая позволяет создавать GraphQL API. Рассмотрим пример:
pip install graphene
import graphene
class Person(graphene.ObjectType):
# Поля типа Person
name = graphene.String()
age = graphene.Int()
def __init__(self, name, age):
self.name = name
self.age = age
class Query(graphene.ObjectType):
# Поля запроса
hello = graphene.String(name=graphene.String(default_value="World"))
person = graphene.Field(Person)
# Резолверы
def resolve_hello(root, info, name):
return f"Hello, {name}!"
def resolve_person(root, info):
return Person(name="Alice", age=30)
schema = graphene.Schema(query=Query)
query = """
query {
hello(name: "John"),
person {
name
age
}
}
"""
result = schema.execute(query)
print(result.data)
Вывод:
{
"hello": "Hello, John!",
"person": {
"name": "Alice",
"age": 30
}
}
class CreatePerson(graphene.Mutation):
class Arguments:
name = graphene.String(required=True)
age = graphene.Int(required=True)
# Поля, которые возвращает мутация
person = graphene.Field(Person)
def mutate(root, info, name, age):
person = Person(name=name, age=age)
return CreatePerson(person=person)
class Mutation(graphene.ObjectType):
create_person = CreatePerson.Field()
schema = graphene.Schema(query=Query, mutation=Mutation)
GraphQL с Graphene предоставляет мощный и гибкий способ создания API в Python, позволяя клиентам точно запрашивать нужные данные и получать предсказуемые результаты. Graphene делает процесс создания GraphQL-сервера интуитивно понятным для Python-разработчиков.