Ho un metodo annotato nel modo seguente:
/**
* Provide a list of all accounts.
*/
// TODO 02: Complete this method. Add annotations to respond
// to GET /accounts and return a List<Account> to be converted.
// Save your work and restart the server. You should get JSON results when accessing
// http://localhost:8080/rest-ws/app/accounts
@RequestMapping(value="/orders", method=RequestMethod.GET)
public @ResponseBody List<Account> accountSummary() {
return accountManager.getAllAccounts();
}
Quindi so che da questa annotazione:
@RequestMapping(value="/orders", method=RequestMethod.GET)
questo metodo gestisce le richieste GET HTTP fatte alla risorsa rappresentata dall'URL / orders .
Questo metodo chiama un oggetto DAO che restituisce un List .
dove Account rappresenta un utente nel sistema e ha alcuni campi che rappresentano questo utente, qualcosa come:
public class Account {
@Id
@Column(name = "ID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long entityId;
@Column(name = "NUMBER")
private String number;
@Column(name = "NAME")
private String name;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name = "ACCOUNT_ID")
private Set<Beneficiary> beneficiaries = new HashSet<Beneficiary>();
...............................
...............................
...............................
}
La mia domanda è: come funziona esattamente l' @ResponseBody
annotazione?
Si trova prima List<Account>
dell'oggetto restituito , quindi penso che si riferisca a questo elenco. La documentazione del corso afferma che questa annotazione ha la funzione di:
assicurarsi che il risultato venga scritto nella risposta HTTP da un convertitore di messaggi HTTP (invece di una vista MVC).
E leggendo anche sulla documentazione ufficiale di primavera: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/ResponseBody.html
sembra che prenda l' List<Account>
oggetto e lo metta nel file Http Response
. È corretto o sto fraintendendo?
Scritto nel commento del accountSummary()
metodo precedente c'è:
Dovresti ottenere risultati JSON quando accedi a http: // localhost: 8080 / rest-ws / app / accounts
Quindi cosa significa esattamente? Significa che l' List<Account>
oggetto restituito dal accountSummary()
metodo viene automaticamente convertito in JSON
formato e quindi inserito nel file Http Response
? O cosa?
Se questa affermazione è vera, dove viene specificato che l'oggetto verrà automaticamente convertito in JSON
formato? Il formato standard viene adottato quando @ResponseBody
si utilizza l' annotazione o è specificato altrove?