Как вы указали сами, полезная нагрузка ответа по умолчанию - Map
(в частности, Map<String, Object>
, см. DefaultErrorAttributes.getErrorAttributes (...) ).Указав это как ответ об ошибке, вы не получите того, что хотите.
Вместо этого вы можете указать полезную нагрузку ответа об ошибке, создав class
с полями карты ошибок по умолчанию.
public class SpringErrorPayload {
public long timestamp;
public int status;
public String error;
public String exception;
public String message;
public String path;
public SpringErrorPayload(long timestamp, int status, String error, String exception, String message, String path) {
this.timestamp = timestamp;
this.status = status;
this.error = error;
this.exception = exception;
this.message = message;
this.path = path;
}
//removed getters and setters
}
Затем, добавив class
к атрибуту response
@ApiResponse
вашего метода, вы получите желаемый результат
@ApiOperation("Create new something")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "New something successfully created"),
@ApiResponse(code = 400, message = "Bad request, adjust before retrying", response = SpringErrorPayload.class),
@ApiResponse(code = 500, message = "Internal Server Error", response = SpringErrorPayload.class )
})
@ResponseStatus(CREATED)
public SomethingPayload createSomething(@Valid @RequestBody final NewSomethingPayload newSomethingPayload) {
return somethingService.createSomething(newSomethingPayload);
}