Tôi có một phương thức được chú thích theo cách sau:
/**
* 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();
}
Vì vậy, tôi biết điều đó bằng chú thích này:
@RequestMapping(value="/orders", method=RequestMethod.GET)
phương thức này xử lý các yêu cầu GET HTTP được thực hiện cho tài nguyên được đại diện bởi URL / đơn đặt hàng .
Phương thức này gọi một đối tượng DAO trả về một Danh sách .
trong đó Tài khoản đại diện cho người dùng trên hệ thống và có một số trường đại diện cho người dùng này, chẳng hạn như:
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>();
...............................
...............................
...............................
}
Câu hỏi của tôi là: Chính xác thì @ResponseBody
chú thích hoạt động như thế nào?
Nó nằm trước List<Account>
đối tượng trả về nên tôi nghĩ rằng nó đề cập đến Danh sách này. Tài liệu khóa học nói rằng chú thích này phục vụ chức năng:
đảm bảo rằng kết quả sẽ được ghi vào phản hồi HTTP bằng Trình chuyển đổi thông báo HTTP (thay vì Chế độ xem MVC).
Và cũng có thể đọc trên tài liệu chính thức của Mùa xuân: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/ResponseBody.html
có vẻ như nó lấy List<Account>
đối tượng và đặt nó vào Http Response
. Điều này là chính xác hay tôi đang hiểu sai?
Được viết vào bình luận của accountSummary()
phương pháp trước đó có:
Bạn sẽ nhận được kết quả JSON khi truy cập http: // localhost: 8080 / rest-ws / app / account
Vậy chính xác thì điều này có nghĩa là gì? Nó có nghĩa là List<Account>
đối tượng được trả về bởi accountSummary()
phương thức được tự động chuyển đổi thành JSON
định dạng và sau đó được đưa vào Http Response
? Hay cái gì?
Nếu khẳng định này là đúng, nó được chỉ định ở đâu rằng đối tượng sẽ được tự động chuyển đổi thành JSON
định dạng? Định dạng tiêu chuẩn có được chấp nhận khi @ResponseBody
chú thích được sử dụng hay nó được chỉ định ở nơi khác không?