@RestController
是@ResponseBody和@Controller的耦合,
@Controller表示该类是一个控制器,@ResponseBody表示该控制器的方法返回的对象直接作为HTTP响应的正文,而不是作为一个视图(view)
写在参数列表中的注释
@PathVariable:
@GetMapping("/users/{userId}")
- 用于从URL模板中提取变量。
- 当你定义了RESTful API时,可以使用它来捕获URL中定义的路径参数。
- 例如,如果你有一个URL模式
/users/{userId}
,并且请求的URL是/users/123
,那么123
可以作为userId
参数传递给控制器方法。 - 通常与
@RequestMapping
或@GetMapping
、@PostMapping
等注解一起使用。
@GetMapping("/users/{userId}")
public User getUserById(@PathVariable("userId") int userId) { // 根据userId获取用户信息 }
@RequestParam:
- 用于从请求的查询参数中提取值。
- 它允许你访问URL的查询字符串部分,例如
?name=value
。 - 即使请求中没有指定参数,也可以使用
required=false
属性设置为非必须,或者通过defaultValue
属性提供一个默认值。 - 通常与
@RequestMapping
或@GetMapping
、@PostMapping
等注解一起使用。
@GetMapping("/search")
public List<User> searchUsers(@RequestParam(value = "name", required = false) String name) { // 根据提供的name参数搜索用户 }
@RequestBody
@RequestBody
允许你将客户端发送的请求体(JSON、XML 等格式)自动转换(通过适当的转换器,如 Jackson 或 JAXB)并绑定到一个对象上。- 当使用
@RequestBody
时,期望客户端发送的请求有一个非空的请求体。如果请求体为空,Spring 将抛出异常。 - 用于将 HTTP 请求的正文(body)映射到控制器方法的参数上。
- 主要用于 POST、PUT 和 PATCH 等请求,这些请求通常需要客户端提交数据以创建或更新资源
@PostMapping("/users")
public ResponseEntity<?> addUser(@RequestBody User user) {// 将接收到的User对象保存到数据库userService.addUser(user);return ResponseEntity.ok().build();
}