【问题标题】:openapi generated Jackson with unknown Value for ENUMopenapi 为 ENUM 生成了具有未知值的 Jackson
【发布时间】:2020-10-23 20:04:53
【问题描述】:

我用 openapi-codegen 创建了一个 rest-api。作为参数,有一个包含两个 ENUM 的对象。

例如

public enum DocumentType {
FOTO_ID("PHOTO_ID");
[...]
}

如果我使用“PHOTO_ID”以外的 DocumentType 发送请求,我会收到以下响应

Cannot construct instance of `[...]`, problem: Unexpected value '[...]'
at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 2, column: 21] (through reference chain: [...])

这是正确的,但我想抓住它并发送我自己的错误响应。

我找不到这样做的方法。

【问题讨论】:

    标签: jackson openapi swagger-codegen


    【解决方案1】:

    如果有人有类似的问题,我刚刚找到了解决方案:

    您必须为 JsonMappingException 设置自己的 ExceptionMapper。 设置优先级很重要,否则您的 Mapper 将不会被使用。

        @Named
        @Singleton
        @Provider
        @Priority(1)
        public class JsonMappingExceptionMapper implements ExceptionMapper<JsonMappingException> {
    
        @Override
        public Response toResponse(JsonMappingException exception) {
            [...]
            }
        }
    

    归功于: Jersey unable to catch any Jackson Exception 用于指出优先主题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      • 2022-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多