【问题标题】:How to customize Java GraphQL error response如何自定义 Java GraphQL 错误响应
【发布时间】:2019-02-07 10:06:27
【问题描述】:

我正在尝试修改 graphql 错误响应。我想从响应中删除空属性。有可能吗?

Current response

我创建了我的 GraphQL 异常,例如 ExceptionWhileDataFetching 和我自己的过滤器客户端错误定义。它工作得很好,但丑陋的空属性在这里,我想删除它们。

例如GraphQL docs 属性扩展应该是可选的,并且在第二个示例屏幕上只有消息属性。这是我想要实现的目标,但我不知道如何实现..

我找到了 GraphqlErrorHelper#toSpecification.. 我认为覆盖它就足够了,GraphQL 库将在没有其他操作的情况下处理错误属性,但它没有..

更新:

我开始考虑是否要尝试做合法的事情.. 我发现我的 ClientException 将正确转到 GraphQLObjectMapper#serializeResultAsJson 中的 getJacksonMapper().writeValueAsString 并且这里的响应以某种方式改变了.. 这部分对于我.. :(

Debug screen

【问题讨论】:

  • 重写filterGraphQLErrors方法并删除空值属性是否不起作用?
  • 我不确定如何实现这一点。在filterGraphQLErrors 我应该只选择我想看到的错误,而不是改变它们的结构,对吧?我尝试调试它,但是当例如MyException#getPath 被调用时,它来自大量的调用,我无法找出响应创建的确切位置以及这些该死的nulls 是如何分配给响应的。

标签: java error-handling graphql graphql-java


【解决方案1】:

好的,我终于找到解决方案了..

JacksonSerialer 使用注释来附加额外的数据。

所以如果我在我的GraphQLError 类中使用@JsonInclude(JsonInclude.Include.NON_NULL),那么一切都可以按我的意愿工作..

终于result I wanted

【讨论】:

    猜你喜欢
    • 2020-11-09
    • 2019-01-19
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多