Как добавить «Пример значения» к параметру в Swagger - PullRequest
1 голос
/ 02 мая 2019

Я создаю новый API Rest с Spring Boot, используя Swagger, чтобы документировать его, и я не могу изменить Пример значения, показанного в Интернете.Я могу изменить его в модели, но не в параметре 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);
    }

Вместо того, чтобы видеть в примере значение «отправлено», вы видите «строку».

Эта аннотация работает отлично для модели Event, но не здесь.

То, что я естьотсутствует

1 Ответ

1 голос
/ 02 мая 2019

В соответствии с документацией @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 , как его использовать.

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