01/10/2018, 08:52
Hỏi về @RequestBody và @ResponseBody trong Spring MVC
e chào anh chị. e đang học về spring mvc. như tiêu đề thì 2 chỗ này e không hiểu lắm. google rồi nhưng thấy ngta trả lời chung chung quá. anh chị có thể giải thích rõ hơn cho e với được không ạ? và cho e ví dụ và giải thích ví dụ luôn được không ạ? e cám ơn
Bài liên quan
Request và Response trong giao thức HTTP. Chuẩn HTTP được viết trong tài liệu RFC2616.
Mỗi request và response đều có 2 thành phần: header và body. @ResquestBody tương ứng với phần body của request. @RespondBody tương ứng với phần body của response.
Bạn chỉ cần đọc phần Request và Response là rõ. Nếu muốn đầy đủ thì đọc tất cả các phần liên quan đến giao thức HTTP.
HTTP Request: https://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html
HTTP Response: https://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html
sao chỉ có đến phần header fields thôi v a?
Xin lỗi bạn nha, mình mới xem lại, đúng là 2 link chỉ miêu tả headers. Tuy nhiên, trong link đó có chứa thông tin là message body, là phần bạn cần.
Còn đây là link để bạn có thể xem thuận tiện hơn:
https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html
Bạn chỉ cần hiểu thế này:
Ví dụ: Giả sử mình muốn lấy thông tin user trả về là 1 chuỗi json string bằng cách request đường dẫn /user/123 với 2 cách sau:
Không sử dụng annotation @ResponseBody
Sử dụng annotation @ResponseBody
=> Qua 2 ví dụ ở trên bạn có thể thấy annotation ResponseBody nói cho MVC biết không render một model vào trong view mà phải trả về đối tượng vào trong body. Spring sẽ tự động convert đối tượng này sang JSON sử dụng Jackson 2. Nói đơn giản hơn là annoation ResponseBody sẽ giúp bạn convert đối tượng trả về thành chuỗi json thì vì bạn dùng 1 thư viện nào nó để convert.
Ví dụ: Giả sử mình muốn tạo một tài khoản cho user:
Client dùng ajax gửi yêu cầu tạo tài khoản:
Server:
=> Tóm lại khi bạn gửi lên json data annotation RequestBody sẽ nói Spring convert json data đó thành đối tượng user và sử dụng như bình thường.
Tồ lô :)).
Em cảm ơn rất rất nhiều. Bài giải thích thật chi tiết cho thằng gà mờ như em đây!
Quá hay bạn. Bạn có nhận gia sư ko nhỉ