最佳方式如何描述" ModelAttribute"与Swagger

时间:2017-04-19 13:51:59

标签: spring spring-boot swagger swagger-2.0 springfox

我正在尝试将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
}

但是招摇所产生的是:

enter image description here

这是不期望的。可以通过

的注释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,但它不起作用。

1 个答案:

答案 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中编写的内容是正确的方法。