我浪费了很多时间试图弄清楚如何在SpringFox (Docket openapi v3.0) 生成的api-docs的输出中为我的 Spring 控制器设置默认 MediaType。最后,我发现了一个几乎未记录的接口OperationBuilderPlugin,理论上它允许我在 OperationContext 中设置一些属性,但不幸的是,尽管在构建操作时我正在寻找的属性似乎被忽略了:
@Override
public void apply(OperationContext context) {
context.operationBuilder()
.produces(new LinkedHashSet<>(
Collections.singletonList(MediaType.APPLICATION_JSON_VALUE)));
}
还尝试将产品直接设置到 Docket 中,但仍然没有运气
@Bean
public Docket api() {
....
return new Docket(DocumentationType.OAS_30)
.securityContexts(Collections.singletonList(securityContext()))
.securitySchemes(Collections.singletonList(authenticationScheme))
.useDefaultResponseMessages(true)
.consumes(new HashSet<>(Arrays.asList(MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE)))
.produces(new LinkedHashSet<>(Arrays.asList("application/json", "application/xml")))
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
...
}
我不想在控制器类级别(或方法级别)指定返回 MediaType,所以如果我找不到更干净的解决方案,我最后的机会是在下载 api 后用我想要的媒体类型手动替换 */* -docs.json 来自远程 url。
有人遇到过同样的问题吗?任何帮助将不胜感激,在此先感谢