I have about 40 APIs that have a similar basic response structure as follows:
{ "lastAccessed": "2015-30-08:14:21:45T", "createdOn": "2015-30-07:09:04:10T", "lastModified": "2015-30-08:14:21:45T", "isReadOnly": "false", "usersAllowed" : ["Tim", "Matt", "Christine"]; "noOfEntries": 1, "object": [ "ObjectA": {
So, I have a base response class that accepts a generic type T as follows:
public class Response<T> { @ApiModelProperty(value="Last time accessed") private String lastAccessed; @ApiModelProperty(value="Time when Created ") private String createdOn; private String lastModified; @ApiModelProperty(value="Created on") private boolean isReadOnly; @ApiModelProperty(value="Users that has access to the object.") private List<String> usersAllowed; private int noOfEntries; private T object;
So, for API A, which returns an Object of type with its own fields, I return a Response as an API response in the controller:
public class A { @ApiModelProperty(value="Name") private String name; @ApiModelProperty(value="OID") private String id;
In the controller: Response data = new Response (); ResponseEntity response = new ResponseEntity <> (data, HttpStatus.OK);
Is there a way in swagger I can recursively specify the model of the response object? For example, I could write the annotation @ApiOperation (response = Response.class), but it would not have a model for A.
source share