如何在Swagger中向参数添加“示例值”

时间:2019-05-02 09:58:45

标签: spring-boot swagger swagger-ui springfox

我正在使用Swagger使用Spring Boot创建一个新的Rest API,以对其进行文档化,并且我无法更改Web上显示的Example Value。我可以在模型中更改它,但不能在POST参数中更改。

这些是我的依赖项:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/>
        <!-- lookup parent from repository -->
    </parent>
...
        <swagger.version>2.9.2</swagger.version>
...
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${swagger.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${swagger.version}</version>
        </dependency>
...

我拥有的代码是:

    @PostMapping("events")
    @ApiOperation(value = "Get events")
    public ResponseEntity<List<Event>> events(
            @ApiParam(value = "Event type", required = true, example = "sent") final @RequestBody String type) {
        return new ResponseEntity<List<Event>>(getEvents.get(type), HttpStatus.OK);
    }

而不是在示例值“ sent”下看到,而是看到“ string”。

此批注适用于事件模型,但不适用于此处。

我想念什么?

2 个答案:

答案 0 :(得分:1)

根据@ApiParam-example属性的文档是

  

非主体类型参数的单个示例

但是,您在字符串参数中使用了@RequestBody注释。 您的情况:将@RequestBody批注更改为@RequestParam,您应该可以在Swagger UI中看到提供的示例:

@PostMapping("events")
@ApiOperation(value = "Get events")
public ResponseEntity<List<Event>> events(
    @ApiParam(value = "Event type", required = true, example = "sent") final @RequestParam String type) {
        return new ResponseEntity<List<Event>>(getEvents.get(type), HttpStatus.OK);
    }

对于主体参数,有examples属性。检查Springfox Reference Documentation的用法。

...
examples = @io.swagger.annotations.Example(
        value = {
            @ExampleProperty(value = "{'property': 'test'}", mediaType = "application/json")
        })) 
}
...

答案 1 :(得分:-1)

您的代码的另一个问题是应该使用POST方法创建新记录。要获取记录列表,您应该使用GET方法(和@GetMapping批注)。