J'ai une méthode qui est annotée de la manière suivante:
/**
* 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();
}
Donc je sais que par cette annotation:
@RequestMapping(value="/orders", method=RequestMethod.GET)
cette méthode gère les requêtes HTTP GET adressées à la ressource représentée par l'URL / les commandes .
Cette méthode appelle un objet DAO qui renvoie un List .
où Account représente un utilisateur sur le système et a des champs qui représentent cet utilisateur, quelque chose comme:
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>();
...............................
...............................
...............................
}
Ma question est la suivante: comment fonctionne exactement l' @ResponseBody
annotation?
Il est situé avant l' List<Account>
objet retourné donc je pense qu'il fait référence à cette liste. La documentation du cours indique que cette annotation a pour fonction de:
assurez-vous que le résultat sera écrit dans la réponse HTTP par un convertisseur de messages HTTP (au lieu d'une vue MVC).
Et aussi lire sur la documentation officielle du printemps: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/ResponseBody.html
il semble qu'il prend l' List<Account>
objet et le met dans leHttp Response
. Est-ce correct ou ai-je mal compris?
Dans le commentaire de la accountSummary()
méthode précédente , il y a:
Vous devriez obtenir des résultats JSON lors de l'accès à http: // localhost: 8080 / rest-ws / app / accounts
Alors qu'est-ce que cela signifie exactement? Cela signifie-t-il que l' List<Account>
objet retourné par la accountSummary()
méthode est automatiquement converti au JSON
format puis mis dans leHttp Response
? Ou quoi?
Si cette assertion est vraie, où est-il spécifié que l'objet sera automatiquement converti au JSON
format? Le format standard est-il adopté lorsque l' @ResponseBody
annotation est utilisée ou est-il spécifié ailleurs?