julienQc
6 years agoOccasional Contributor
@ApiResponse messages inheritance
Hi,
I'm facing a problem that I don't know if it's an issue or a normal behaviour of swagger.
And if it's a normal behaviour, maybe it could be improved
I'm defining interfaces and swag...
- 6 years ago
this is not supported atm as the container annotation ApiRepsonses is overriden in full, and there are no short term plans to change this behaviour; however you can possibly achieve what you need, more as a side effect, by including your ApiResponse annotations of "base interface" (first and second enpoint) within `@Operation` annotation, and keeping controller as is; as responses within Operation are resolved first, and responses defined on method are then merged with these, this match your desired behaviour.
e.g.
public interface FirstEndpoint<C> { @POST @Path("/") @Operation(responses = { @ApiResponse(responseCode = "201", description = "Created"), @ApiResponse(responseCode = "400", description = "Bad Request"), @ApiResponse(responseCode = "403", description = "Forbidden"), @ApiResponse(responseCode = "404", description = "Not Found")}) default String firstEndpoint(C param) { return "firstEndpoint-ok"; } }
public interface SecondEndpoint<C> { @GET @Path("/{id}") @Operation(responses = { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "Bad Request"), @ApiResponse(responseCode = "403", description = "Forbidden"), @ApiResponse(responseCode = "404", description = "Not Found")}) default String secondEnpoint(C param) { return "secondEnpoint-ok"; }