Python石墨烯。授权错误处理

时间:2020-01-27 17:29:27

标签: vue.js graphene-python

我具有以下环境:

前端

@ vue / cli 4.1.2

vue-apollo 3.0.2

后端

python 3.8

django 3.0.2

graphene-django 2.8.0

django-graphql-jwt 0.3.0

我的问题是令牌过期时处理auth错误。例如,如果令牌过期时我请求查询me

def resolve_me(root, info):
    user = info.context.user
    if user.is_anonymous:
        raise GraphQLError('Authentication failure!!')
    return user

在apollo客户端的链接中收到200,并且networkError对象为空,而graphQLErrors对象未提供状态代码。

您如何管理这种情况? 预先感谢。

1 个答案:

答案 0 :(得分:1)

查看此评论https://github.com/graphql-python/graphene/issues/142#issuecomment-221290862

据GraphQL规范所知,根本没有讨论HTTP响应代码。 HTTP的状态码与其余原则紧密相关。我不清楚GraphQL API是否应区分2XX和4XX状态代码。

最显着的是,您可以将多个变异批处理到服务器的同一请求中。如果成功创建一个资源(201),一个突变了资源(200),一个验证失败(400),而另一个目标对象不存在(404),那么API的返回值应该是什么?

目前,除非服务器崩溃(在这种情况下为500),否则GraphQL API似乎在200左右出错。