其他分享
首页 > 其他分享> > spring – 如何用Swagger描述“ModelAttribute”的最佳方法

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
}

但是招摇所产生的是:

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中包含的请求参数的正确方法是什么?对我来说,最好的方法是使用@ApiModel注释SearchCriteria类,但它不起作用.

解决方法:

这个bugSpringfox 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