Mam metodę, która jest opisana w następujący sposób:
/**
* 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();
}
Więc wiem, że dzięki tej adnotacji:
@RequestMapping(value="/orders", method=RequestMethod.GET)
ta metoda obsługuje żądania GET HTTP skierowane do zasobu reprezentowanego przez adres URL / zamówienia .
Ta metoda wywołuje obiekt DAO, który zwraca List .
gdzie Konto reprezentuje użytkownika w systemie i ma kilka pól, które reprezentują tego użytkownika, na przykład:
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>();
...............................
...............................
...............................
}
Moje pytanie brzmi: jak dokładnie działa @ResponseBody
adnotacja?
Znajduje się przed zwróconym List<Account>
obiektem, więc myślę, że odwołuje się do tej listy. Dokumentacja kursu stwierdza, że ta adnotacja służy do:
upewnij się, że wynik zostanie zapisany w odpowiedzi HTTP przez konwerter komunikatów HTTP (zamiast widoku MVC).
A także czytanie oficjalnej dokumentacji Spring: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/ResponseBody.html
wydaje się, że bierze List<Account>
przedmiot i wkłada go do Http Response
. Czy to prawda, czy nie rozumiem?
W komentarzu do poprzedniej accountSummary()
metody wpisano:
Powinieneś otrzymać wyniki JSON podczas uzyskiwania dostępu do http: // localhost: 8080 / rest-ws / app / accounts
Więc co to dokładnie oznacza? Czy to oznacza, że List<Account>
obiekt zwracany przez accountSummary()
metodę jest automatycznie konwertowany do JSON
formatu, a następnie umieszczany w Http Response
? Albo co?
Jeśli to stwierdzenie jest prawdziwe, gdzie określono, że obiekt zostanie automatycznie przekonwertowany na JSON
format? Czy przyjęto standardowy format, gdy @ResponseBody
jest używana adnotacja, czy też określono go gdzie indziej?