我正在尝试将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中包含的请求参数的正确方法是什么?对我来说,最好的方法是使用SearchCriteria
注释@ApiModel
,但它不起作用。
答案 0 :(得分:2)
此bug已在Springfox v2.7.0中修复。
原始答案:
@Valid
- 注释实际上会将param视为body-param。
因为这不应该这样做I've opened an issue on the springfox github page。
但@ApiParam(hidden = true)不起作用
Springfox提供springfox.documentation.annotations.ApiIgnore
- 注释应该有效。
使用springfox中的注释在this issue中编写的内容是正确的方法。