¿Cómo funciona la anotación Spring @ResponseBody en este ejemplo de aplicación RESTful?
Tengo un método que se anota de la siguiente manera:
/**
* 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();
}
Entonces sé que por esta anotación:
@RequestMapping(value="/orders", method=RequestMethod.GET)
este método manejaOBTENER Solicitudes HTTP realizadas al recurso representado por la URL/pedidos.
Este método llama a un objeto DAO que devuelve unLista.
dóndeCuenta representa a un usuario en el sistema y tiene algunos campos que representan a este usuario, algo como:
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>();
...............................
...............................
...............................
}
Mi pregunta es:¿Cómo exactamente el@ResponseBody
trabajo de anotación?
Está situado antes del regresoList<Account>
objeto, así que creo que se refiere a esta lista. La documentación del curso establece que esta anotación cumple la función de:
asegúrese de que el resultado se escriba en la respuesta HTTP mediante un convertidor de mensajes HTTP (en lugar de una vista MVC).
Y también leyendo en la documentación oficial de Spring:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/ResponseBody.html
parece que toma elList<Account>
objetar y lo pone en elHttp Response
. ¿Es esto correcto o estoy malentendido?
Escrito en el comentario del anterioraccountSummary()
método hay:
Debería obtener resultados JSON al accederhttp: // localhost: 8080 / rest-ws / app / accounts
Entonces, ¿qué significa esto exactamente? ¿Significa que elList<Account>
objeto devuelto por elaccountSummary()
El método se convierte automáticamente enJSON
formatear y luego poner en elHttp Response
? ¿O que?
Si esta afirmación es verdadera, ¿dónde se especifica que el objeto se convertirá automáticamente enJSON
¿formato? Es el formato estándar adoptado cuando el@ResponseBody
¿Se utiliza la anotación o se especifica en otra parte?