当前位置:首页 > 行业动态 > 正文

controller api注解

Controller API注解是用于在Spring框架中定义RESTful接口的 注解,如@Rest Controller、@RequestMapping等。

在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) {
          // ...
      }

FAQs(常见问题解答)

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请求到相应的方法上。