#python #graphql #graphene-python #sanic
#python #graphql #graphene-python #sanic
Вопрос:
В настоящее время я использую sanic-graphql, но, похоже, я вообще не могу запустить перенаправление URL.
from sanic import response
class CreateSample( Mutation ):
class Arguments:
input = SampleInputType()
Output = SampleSchema
async def mutate( self, info, input ):
return response.redirect( 'https://www.google.com' )
Но, похоже, логика библиотеки заключается в том, чтобы всегда пытаться возвращать возвращаемое значение, заключенное в тип вывода.
Есть ли у меня какой-либо способ вызвать обычное перенаправление URL-адреса?
Ответ №1:
Код, который вы показали, описывает мутацию GraphQL. Это не имеет ничего общего с взаимодействием с пользователем.
class CreateSample( Mutation ): # <-- Mutation name
class Arguments:
input = SampleInputType() # <-- Mutation takes one argument
Output = SampleSchema # <-- Mutation returns object with type SampleSchema
async def mutate( self, info, input ):
result = do_something()
return CreateSample(Output=result) # <-- Mutation must return self type
Вы можете вызывать мутации только с помощью какого-либо клиента GraphQL, такого как Apollo client или Graphiql. Таким образом, возврат response.redirect не создает сцен.
Вы можете вернуть response.redirect() только внутри sanic route. Что-то вроде —
@app.route('/<path:path>')
def index(request, path):
"""Catch all requests"""
return response.redirect( 'https://www.google.com' )