如何自定义 Java GraphQL 错误响应
How to customize Java GraphQL error response
我正在尝试修改 graphql 错误响应。我想从响应中删除空属性。可能吗?
Current response
我创建了我的 GraphQL 异常,如 ExceptionWhileDataFetching 和我自己的过滤器客户端错误定义。它工作得很好,但这里有丑陋的空属性,我想删除它们。
例如 GraphQL docs 属性扩展应该是可选的,在第二个示例屏幕上只有消息属性。这是我想要实现的,但我不知道如何..
我找到了 GraphqlErrorHelper#toSpecification.. 我认为覆盖它就足够了,GraphQL 库将在没有其他操作的情况下处理错误属性,但它没有..
更新:
我开始思考我是否在尝试做合法的事情。我发现我的 ClientException
会在 GraphQLObjectMapper#serializeResultAsJson
中正确地转到 getJacksonMapper().writeValueAsString
并且这里的响应不知何故发生了变化.. 这部分对我来说有点神奇.. :(
Debug screen
好的,我终于找到解决办法了..
JacksonSerialer
使用注释附加额外数据。
因此,如果我在我的 GraphQLError
class 中使用 @JsonInclude(JsonInclude.Include.NON_NULL)
,一切都会如我所愿..
终于result I wanted
我正在尝试修改 graphql 错误响应。我想从响应中删除空属性。可能吗?
Current response
我创建了我的 GraphQL 异常,如 ExceptionWhileDataFetching 和我自己的过滤器客户端错误定义。它工作得很好,但这里有丑陋的空属性,我想删除它们。
例如 GraphQL docs 属性扩展应该是可选的,在第二个示例屏幕上只有消息属性。这是我想要实现的,但我不知道如何..
我找到了 GraphqlErrorHelper#toSpecification.. 我认为覆盖它就足够了,GraphQL 库将在没有其他操作的情况下处理错误属性,但它没有..
更新:
我开始思考我是否在尝试做合法的事情。我发现我的 ClientException
会在 GraphQLObjectMapper#serializeResultAsJson
中正确地转到 getJacksonMapper().writeValueAsString
并且这里的响应不知何故发生了变化.. 这部分对我来说有点神奇.. :(
Debug screen
好的,我终于找到解决办法了..
JacksonSerialer
使用注释附加额外数据。
因此,如果我在我的 GraphQLError
class 中使用 @JsonInclude(JsonInclude.Include.NON_NULL)
,一切都会如我所愿..
终于result I wanted