【问题标题】:Swagger-ui not working with jackson-dataformat-xmlSwagger-ui 不适用于 jackson-dataformat-xml
【发布时间】:2019-08-03 00:07:51
【问题描述】:

我正在使用 Spring 4.3.18 和 swagger 文档**(springfox 2.8.0)构建一个 rest API。一切正常,但如果我添加到我的 **pom.xml jackson-dataformat-xml 依赖项,swagger-ui.html 将不再显示。我认为这是 Spring http 转换器的问题,因为当我尝试转到需要 json 转换器的 swagger-ui.html 时,Spring 似乎使用了 xml 转换器。其实我不知道如何解决这个问题,我真的需要杰克逊依赖,所以我不能删除它。我如何告诉 Spring 为该 url 使用 json 转换器?我还注意到,当我尝试访问 swagger-ui.html 我的浏览器发送 http 标头接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8, 然后 Spring 使用xml 转换器发送响应,但 swagger-ui 需要 json 才能工作。 提前致谢。

【问题讨论】:

  • 这有什么更新吗?我遇到了同样的问题?

标签: java json spring swagger jackson-dataformat-xml


【解决方案1】:

swagger ui 不适用于 jackson-dataformat-xml。您可以尝试以下方法。

  1. 您需要添加内容类型的标头:application/json。如果你需要调用任何api(例如/v2/api-docs),你需要添加一个http头来通过postman接受application/json。

  2. 或者确保jackson消息转换器的优先级高于xml。对于springboot,你可以添加。

@Bean
public RequestMappingHandlerAdapter requestHandler() {
    RequestMappingHandlerAdapter adapter = new RequestMappingHandlerAdapter();
    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    List<MediaType> mediaTypeList = new ArrayList<>();
    mediaTypeList.add(MediaType.APPLICATION_JSON);
    converter.setSupportedMediaTypes(mediaTypeList);
    adapter.getMessageConverters().add(converter);
    return adapter;
}
  1. 最简单。对不起。删除 jackson-dataformat-xml 依赖项。试试 JAXB 或其他东西。

你可以在这里阅读更多 https://github.com/springfox/springfox/issues/1835

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2018-09-20
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2019-11-09
    • 2016-03-02
    • 1970-01-01
    相关资源
    最近更新 更多