spring – 如何用Swagger描述“ModelAttribute”的最佳方法
作者:互联网
我正在尝试将Swagger2集成到基于Spring Boot的应用程序中.问题是招摇不考虑模型属性.
@GetMapping(value = "/events", produces = MediaType.APPLICATION_JSON_VALUE)
public PagedResources<EventResource> getEvents(
@Valid SearchCriteria searchQuery,
BindingResult result,
PageableResourcesAssembler<EventResource> assembler){
// code
}
正如您所看到的,SearchCriteria是一个由Spring自动绑定的类.
public class SearchCriteria {
private List<EventType> eventTypes;
private LocalDateTime from;
// getters setters
}
但是招摇所产生的是:
这不是预期的.期望的结果可能由注释getEvents方法生成
@ApiImplicitParams({
@ApiImplicitParam(name = "eventTypes", paramType = "query"),
@ApiImplicitParam(name = "from", paramType = "query")
})
PagedResources<EventResource> getEvents(@ApiParam(hidden = true ) @Valid SearchCriteria searchQuery
但@ApiParam(hidden = true)不起作用,因为在Swagger UI中仍然存在searchQuery参数.
使用swagger描述POJO中包含的请求参数的正确方法是什么?对我来说,最好的方法是使用@ApiModel注释SearchCriteria类,但它不起作用.
解决方法:
这个bug在Springfox v2.7.0修复.
原答案:
@ Valid-annotation实际上确实将param视为body-param.
因为这不应该这样做I’ve opened an issue on the springfox github page.
but the @ApiParam(hidden = true ) does not work
Springfox提供了应该工作的springfox.documentation.annotations.ApiIgnore-annotation.
就像在this issue中使用springfox的注释一样是正确的方法.
标签:spring,spring-boot-2,swagger,swagger-2-0,springfox 来源: https://codeday.me/bug/20190701/1350426.html