首页 > 解决方案 > 在发生异常时使用服务抛出的不同代码覆盖 GraphQL 默认状态代码(200)

问题描述

我在 SpringBoot 之上构建了一个微服务,并且我将 GraphQL 用于微服务。默认情况下,GraphQL 发送 200 状态代码,即使它的错误和错误详细信息作为响应的错误部分的一部分出现。

但是我想在事务不成功并被服务抛出异常时发送不同的状态码。

我怎样才能做到这一点?有人可以帮我吗?

我当前的自定义异常类是 GraphQLError 类型。

提前致谢

标签: spring-bootgraphqlgraphql-java

解决方案


根据 GraphQL标准,任何错误都应该在error块中返回,所以你应该返回状态码,错误块中的消息

响应中的错误条目是一个非空错误列表,其中每个错误都是一个映射。

如果在请求的操作期间没有遇到错误,则错误条目不应出现在结果中。

如果响应中的数据条目不存在,则响应中的错误条目不能为空。它必须包含至少一个错误。它包含的错误应该表明为什么无法返回数据。

如果响应中的数据条目存在(包括它是否为 null 值),则响应中的错误条目可能包含执行期间发生的任何错误。如果在执行过程中发生错误,它应该包含这些错误。

{
   "errors": [
       {
           "message": "error message",
           "path": "/api/call",
           "status_code": 500
       }
   ],
    "data": null
}

推荐阅读