Учитывая следующий метод REST с аннотациями springfox-swagger2:
@GetMapping(value = "/access", produces = MediaType.APPLICATION_JSON_VALUE)
@ApiOperation(value = "check access allowed")
@ApiResponses({
@ApiResponse(code = 200, message = "okay, there you go", response = AccessResponse.class),
@ApiResponse(code = 204, message = "I got nothing for you", response = Void.class)
})
public ResponseEntity<AccessResponse> access() {
if (!isAccessEnabled()) {
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
}
AccessResponse response = new AccessResponse("some data");
return ResponseEntity.ok(response);
}
Обратите внимание, что есть два состояния, которые этот метод может возвратить:
- ответ типа AccessResponse
- a http 204 - нет ответа на контент
Я хочу сгенерировать документацию api swagger, отражающую различные модели ответов (AccessResponse vs. Void).Внутри аннотации @ApiResponse я явно указываю springfox-swagger2 использовать разные модели для каждого состояния.К сожалению, сгенерированный swagger api doc json относится только к модели AccessResponse для http 200 и 204:
"responses":{
"200":{
"description":"okay, there you go",
"schema":{"$ref":"#/definitions/AccessResponse"}
},
"204":{
"description":"I got nothing for you",
"schema":{"$ref":"#/definitions/AccessResponse"}
}
}
Я что-то упустил?Есть ли способ сообщить Swagger, чтобы он отображал две разные модели для каждого кода состояния HTTP / ok?