Wie funktioniert die Spring @ResponseBody-Annotation in diesem RESTful-Anwendungsbeispiel?
Ich habe eine Methode, die wie folgt mit Anmerkungen versehen ist:
/**
* 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();
}
So weiß ich das durch diese Anmerkung:
@RequestMapping(value="/orders", method=RequestMethod.GET)
diese Methode handleBEKOMME HTTP-Anforderungen an die Ressource, die durch die URL @ dargestellt wi/Aufträg.
Diese Methode ruft ein DAO-Objekt auf, das ein @ zurückgibAufführe.
woKont repräsentiert einen Benutzer im System und hat einige Felder, die diesen Benutzer repräsentieren, wie zum Beispiel:
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>();
...............................
...............................
...............................
}
Meine Frage ist:Wie genau funktioniert das@ResponseBody
Annotation Arbeit?
s befindet sich vor dem zurückgegebenenList<Account>
Objekt also denke ich, dass es sich um diese Liste handelt. Die Kursdokumentation besagt, dass diese Annotation folgende Funktion erfüllt:
Stellen Sie sicher, dass das Ergebnis von einem HTTP Message Converter (anstelle einer MVC-Ansicht) in die HTTP-Antwort geschrieben wird.
Und lesen Sie auch die offizielle Spring-Dokumentation:http: //docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/ResponseBody.htm
es scheint, dass es das @ braucList<Account>
Objekt und setzt es in dasHttp Response
. Ist das richtig oder missverstehe ich das?
In den Kommentar des vorherigen @ geschriebaccountSummary()
Methode gibt es:
Sie sollten JSON-Ergebnisse erhalten, wenn Sie auf @ zugreifehttp: // localhost: 8080 / rest-ws / app / accounts
Also, was genau bedeutet das? Bedeutet das, dass dasList<Account>
Objekt, das vom @ zurückgegeben wuraccountSummary()
Methode wird automatisch in @ konvertieJSON
-Format und dann in dasHttp Response
? Oder was
Wenn diese Aussage wahr ist, wird angegeben, dass das Objekt automatisch in @ konvertiert wirJSON
Format? Wird das Standardformat übernommen, wenn das@ResponseBody
Annotation wird verwendet oder ist sie an einer anderen Stelle angegeben?