Я новичок в Graphql и Python.
Итак, когда я разрабатывал lil-проект, у меня просто была эта проблема с мутацией:
class User(graphene.ObjectType):
id = graphene.ID(required=False)
username = graphene.String()
last_login = graphene.DateTime(required=False)
class CreateUser(graphene.Mutation):
class Arguments:
username = graphene.String()
user = graphene.Field(User)
def mutate(self, info, username):
user = User(username=username)
return CreateUser(user=user)
class Mutations(graphene.ObjectType):
create_user = CreateUser.Field()
schema = graphene.Schema(mutation=Mutations)
И я звоню в Почтальон:
{
"mutation": "{createUser (username: 'User test') {user {username}}}"}
Мой заголовок:
Content-Type: применение / JSON
И мой ответ: null
Я не знаю, является ли моя проблема реализацией или моим вызовом.
------------------- РЕДАКТИРОВАНИЕ --------------------------- -
Я просто изменяю что-то в своем коде, теперь у меня есть запрос, и он работает, и я реализую простой запрос прямо в коде, и он работает
Я только что сделал это:
import graphene
import json
from datetime import datetime
class User(graphene.ObjectType):
id = graphene.ID(required=False)
username = graphene.String()
last_login = graphene.DateTime(required=False)
def __populate_users__():
return [
User(username='User1 teste', last_login=datetime.now()),
User(username='User2 teste', last_login=datetime.now()),
User(username='User3 teste', last_login=datetime.now())
]
class Query(graphene.ObjectType):
users = graphene.List(User, first=graphene.Int())
all_users = graphene.List(User)
def resolve_users(self, info, first):
return __populate_users__()[:first]
def resolve_all_users(self, info):
return __populate_users__()
class CreateUser(graphene.Mutation):
class Arguments:
username = graphene.String()
user = graphene.Field(User)
def mutate(self, info, username):
print "TESTE"
user = User(username=username)
return CreateUser(user=user)
class Mutations(graphene.ObjectType):
create_user = CreateUser.Field()
schema = graphene.Schema(query=Query, mutation=Mutations)
# IT WORKS!!!
result = schema.execute(
'''
mutation {
createUser(username: "User test") {
user {
username
}
}
}
'''
)
items = dict(result.data.items())
print(json.dumps(items))
Поэтому, когда я вызываю мой запрос в Почтальоне, он тоже работает:
{
"query": "{allUsers {username lastLogin}}"}
И заголовки:
Content-Type: применение / JSON
Я не могу понять, почему запрос работает, а мутация не работает в Почтальоне.