在Spring Boot应用程序中,Controller层的注解是用于处理HTTP请求并返回响应结果的重要工具,以下是一些常见的Controller API注解及其详细解释:
1、@Controller
用途:标记一个类作为Spring MVC的控制器,此类中包含的方法将被映射为HTTP请求处理器。
示例:
@Controller public class MyController { // ... }
2、@RestController
用途:是一个组合注解,它同时包含了@Controller和@ResponseBody,意味着该控制器的所有方法都将直接返回JSON、XML或者其他类型的数据而不是视图名。
示例:
@RestController public class MyRestController { // ... }
3、@RequestMapping
用途:用于指定控制器类或者方法处理的请求的基本URL路径,它可以放在类或方法上。
示例:
@Controller @RequestMapping("/api/v1") public class MyApiV1Controller { @RequestMapping("/users") public ResponseEntity<List<User>> getAllUsers() { // ... } }
4、@GetMapping
用途:对应HTTP的GET方法,用于精确映射HTTP GET请求到相应的方法。
示例:
@GetMapping("/users/{id}") public User getUser(@PathVariable Long id) { // ... }
5、@PostMapping
用途:对应HTTP的POST方法,用于精确映射HTTP POST请求到相应的方法。
示例:
@PostMapping("/users") public ResponseEntity<User> createUser(@RequestBody User user) { // ... }
6、@PutMapping
用途:对应HTTP的PUT方法,用于精确映射HTTP PUT请求到相应的方法。
示例:
@PutMapping("/users/{id}") public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User updatedUser) { // ... }
7、@DeleteMapping
用途:对应HTTP的DELETE方法,用于精确映射HTTP DELETE请求到相应的方法。
示例:
@DeleteMapping("/users/{id}") public ResponseEntity<Void> deleteUser(@PathVariable Long id) { // ... }
8、@PathVariable
用途:从URL模板变量中提取值,并将其绑定到方法参数。
示例:
@GetMapping("/users/{userId}/details") public UserDetails getUserDetails(@PathVariable("userId") Long userId) { // ... }
9、@RequestParam
用途:从请求的查询参数中获取值。
示例:
@GetMapping("/search") public List<User> searchUsers( @RequestParam(name = "name", required = false) String name, @RequestParam(defaultValue = "10") int limit) { // ... }
10、@RequestBody
用途:将整个HTTP请求体转换成Java对象。
示例:
@PostMapping("/users") public User createUser(@RequestBody User newUser) { // ... }
11、@RequestHeader
用途:从请求头中提取指定名称的值。
示例:
@GetMapping("/headers") public String getHeaderValue(@RequestHeader("Authorization") String authHeader) { // ... }
12、@CookieValue
用途:从请求的cookie中提取指定名称的值。
示例:
@GetMapping("/cookies") public String getCookie(@CookieValue(value = "JSESSIONID", defaultValue = "") String sessionId) { // ... }
13、@ModelAttribute
用途:用于将请求参数自动绑定到模型属性对象,或者在方法体内填充模型属性。
示例:
@ModelAttribute("userForm") public UserForm setUpUserForm() { return new UserForm(); } @PostMapping("/register") public String register(@ModelAttribute("userForm") UserForm userForm) { // ... }
1、问:@RestController和@Controller有什么区别?
答:@RestController是一个组合注解,它同时包含了@Controller和@ResponseBody,意味着该控制器的所有方法都将直接返回JSON、XML或者其他类型的数据而不是视图名,而@Controller只是标记一个类作为Spring MVC的控制器,需要结合@ResponseBody来返回数据。
2、问:如何在Spring Boot中处理HTTP请求的不同方法(如GET、POST等)?
答:可以使用@GetMapping、@PostMapping、@PutMapping和@DeleteMapping等注解来分别处理HTTP的GET、POST、PUT和DELETE请求,这些注解可以精确地映射HTTP请求到相应的方法上。