gpt4 book ai didi

java - 使用 graphql-java-tools 和 graphql-spring-boot-starter 进行错误处理

转载 作者:行者123 更新时间:2023-12-01 16:29:06 24 4
gpt4 key购买 nike

如何处理 graphQL API 中的错误?我正在使用 graphql-java-tools 和 graphql-spring-boot-starter。我创建了错误处理程序,但每次我都会收到响应 200,即使抛出异常也是如此。你能告诉我如何设置错误代码,例如 400 作为响应吗?

@Component
public class CustomGraphQLErrorHandler implements GraphQLErrorHandler {

@Override
public List<GraphQLError> processErrors(List<GraphQLError> list) {
return list.stream().map(this::getNested).collect(Collectors.toList());
}

private GraphQLError getNested(GraphQLError error) {
if (error instanceof ExceptionWhileDataFetching) {
ExceptionWhileDataFetching exceptionError = (ExceptionWhileDataFetching) error;
if (exceptionError.getException() instanceof GraphQLError) {
return (GraphQLError) exceptionError.getException();
}
}
return error;
}
}

最佳答案

GraphQL 服务器在可以接受请求时返回 HTTP 200(语法有效,服务器已启动...)。

如果发生错误,它将返回 200 并填充响应中的错误列表。

因此,在客户端,您将拥有:

  • 如果 HTTP 状态不同于 200,则表示服务器技术错误
  • 处理请求时出现错误(技术性或非技术性),如果 HTTP状态为 200 并且错误列表不为空
  • 如果 HTTP 没有错误状态为 200 并且错误列表不存在(不应该是根据 GraphQL 规范,存在且为空)

关于java - 使用 graphql-java-tools 和 graphql-spring-boot-starter 进行错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62085033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com