Возможно ли перенаправление URL внутри при использовании graphene graphql?

#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' )