Spring MVC – Phần 3: Annotation(3) – Annotation @ResponseBody, @RestController trong Spring MVC
Annotation RequestBody và RestController được sử dụng khi muốn trả về giá trị là text (json, xml, text…) thay vì trả về view. Thường áp dụng khi phát triển các API
1. Annotation @ResponseBody
Annotation @ResponseBody được thêm vào trước các method của các controller để chỉ dẫn rằng method này sẽ trả về text thay vì trả về view.
Ví dụ:
@RequestMapping("/test1") @ResponseBody public String test1() { return "test1"; }
2. Annotation @RestController
Annotation @RestController tương đương với @Controller + @ResponseBody
Annotation @RestController được dùng trước các class, các method trong class này sẽ trả về text thay vì trả về view.
Ví dụ:
@RestController public class APIController { @RequestMapping("/test2") public String test2() { return "test1"; } }
Trường hợp kiểu dữ liệu trả về không phải là String mà là 1 đối tượng thì nó sẽ parse đối tượng đó ra thành dữ liệu dạng xml hoặc json để trả về
(Xem thêm: Trả về dữ liệu định dạng JSON trong Spring MVC | Trả về dữ liệu định dạng XML trong Spring MVC )
3. Demo
Thư viện sử dụng:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>stackjava.com</groupId> <artifactId>SpringAnnotation3</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <properties> <spring.version>5.0.2.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> </dependencies> </project>
Các controller:
package stackjava.com.springmvchello.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HomeController { @RequestMapping("/") public String home() { return "home"; } @RequestMapping("/test1") @ResponseBody public String test1() { return "test1"; } }
package stackjava.com.springmvchello.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class APIController { @RequestMapping("/test2") public String test2() { return "test2"; } }
Demo:
Download code ví dụ trên tại đây
References: https://spring.io/guides/gs/rest-service/