Ho circa 40 API che hanno analoga struttura di risposta di base come segue:Come specificare una classe di tipo generico per una risposta API Swagger
{
"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": {
//here object A has its own model
}
]
}
quindi ho una classe di risposta di base prendendo un generico di tipo T come segue :
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;
//getters and setters
}
Così, per l'API a, che restituisce l'oggetto di tipo con i propri campi, sto tornando di risposta come la risposta API nel controller:
public class A {
@ApiModelProperty(value="Name")
private String name;
@ApiModelProperty(value="OID")
private String id;
//getters and setters
}
Nel controller: Dati di risposta = nuova risposta(); ResponseEntity response = new ResponseEntity <> (dati, HttpStatus.OK);
C'è un modo in swagger Posso specificare il modello dell'oggetto risposta in modo ricorsivo? Ad esempio, potrei avere l'annotazione @ApiOperation (response = Response.class) ma non avrebbe il modello per A.