如何移除Swagger UI返回zip接口响应中的多余示例值
解决方案
针对你使用Springfox 2.9.2版本的场景,无需升级版本也可以通过注解配置移除多余的返回示例,具体操作如下:
方法1:修改接口注解配置
将@ApiOperation中的response属性修改为Void.class,同时新增@ApiResponses注解显式指定200状态码的返回类型为空,同时在@GetMapping中添加produces属性指定返回类型为zip:
@ApiOperation(value = "Download all files in a zip file.") @ApiResponses(value = { @ApiResponse(code = 200, message = "OK", response = Void.class) }) @GetMapping(path = "/{id}.zip", produces = "application/zip") @ResponseBody public ResponseEntity<Resource> getFiles(@PathVariable(value="id") Integer id) { Resource resource = service.loadFiles(id); return ResponseEntity.ok() .contentType(MediaType.valueOf("application/zip")) .body(resource); }
原理说明
Springfox 2.9.2会默认解析方法返回值的泛型类型Resource,自动生成对应的JSON结构示例。手动指定返回的响应类为Void.class后,Swagger会判定该接口无结构化返回值,就不会再生成多余的JSON示例,同时不会影响实际的文件下载逻辑。
方法2:版本升级
如果可以接受依赖版本迭代,直接升级到Springfox 3.0.0版本即可,该版本已经原生修复了二进制文件返回场景下的示例自动生成问题,无需额外修改注解配置即可符合预期。
内容的提问来源于stack exchange,提问作者Werbel
相关产品推荐
相关产品推荐

