最近我一直在更新我的GO REST API到graphQl API's,我遇到了一个问题,我无法使用gqlgen自定义我的状态代码。
我得到的回应
报头
Status Code: 200 OK
{
data: null,
errors: [
{message: "Unauthorized access", path: ["..."]}
]
}
预期标题
Status Code: 401 UNAUTHORISED
任何帮助将是真正的感激!
最近我一直在更新我的GO REST API到graphQl API's,我遇到了一个问题,我无法使用gqlgen自定义我的状态代码。
我得到的回应
报头
Status Code: 200 OK
{
data: null,
errors: [
{message: "Unauthorized access", path: ["..."]}
]
}
预期标题
Status Code: 401 UNAUTHORISED
任何帮助将是真正的感激!
1条答案
按热度按时间8i9zcol21#
假设你有一个类似于下面的
gqlgen
解析器:则所描述的行为是预期的。错误应该作为响应体的一部分返回。
GraphQL是传输不可知的。虽然它通常通过HTTP提供,但也可以通过其他客户端-服务器协议提供。处理响应体中的错误不需要对协议进行任何假设。因此,您不应该依赖HTTP状态码。
在响应体中处理错误还有另一个优点:假设一个请求包含多个查询。有些人成功了,有些人失败了。然后响应可以包含在
data
下成功查询的结果和与在errors
下失败查询相关的错误。参考文献:
可能的原因,你期望一个401状态码
gqlgen
docs on authentication包含一个返回401状态代码的示例。为什么?这发生在一个http处理程序中,它被用作chi http服务器上的中间件。401状态码是由GraphQL解析器返回的。