@RestController 用于标注控制层组件,组合了@Controller和@ResponseBody两个注解。 标记类是一个控制器类 方法的返回值将直接写入HTTP响应体中,而不是解析为跳转路径。 客户端可以直接获取到返回的数据,而不需要再次请求获取数据。
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/{id}")
public User getUserById(@PathVariable("id") Long id) {
// 通过 ID 获取用户
}
}
@RequestMapping(xxx) 用来映射 HTTP 请求,可以用在 Controller 层或者Handler 方法中。
@RestController
@RequestMapping("/user")
public class UserController {
@RequestMapping("/{id}")
@ResponseBody
public User getUserById(@PathVariable("id") Long id) {
// 通过 ID 获取用户
}
}
请求url为 /user/id
参数
value:
用于指定请求的URL。它和path属性的作用是一样的
method:
用于指定请求的方式
params:
用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置的一模一 样
@RequestMapping("/user/{accountName}"),表示请求参数必须有accountName
@RequestMapping("/user/{contentId }/{userId")
前端
return request({
url: "/syscontent/like/" + row.contentId + "/" + row.userId,
method: "post",
});
params = {"moeny!100"},表示请求参数中money不能是100
@PatchMapping: 匹配PATCH方式的请求
@GetMapping: 用于处理HTTP GET请求,并将其映射到Java方法上。
@PostMapping: 用于处理HTTP POST请求,并将其映射到Java方法上。
@PutMapping: 用于处理HTTP PUT请求,并将其映射到Java方法上。
@PutMapping("/users/{id}")
public ResponseEntity<Void> updateUser(@PathVariable Long id, @RequestBody User user) {
// 根据 id 更新用户信息
// ...
return ResponseEntity.noContent().build();
}
指定了请求路径为 /users/{id}。@PathVariable 注解用于将 URL 中的占位符映射到方法的参数上,@RequestBody 注解用于将 HTTP 请求体映射到方法的参数上。
在方法中,根据 id 更新用户信息,然后使用 ResponseEntity.noContent() 方法返回一个空的响应体。
ResponseEntity 是 Spring 提供的一个用于构建 HTTP 响应的类,可以设置响应状态码、响应头和响应体等信息。
@DeleteMapping: 用于处理HTTP DELETE请求,并将其映射到Java方法上。
@ExceptionHandler — 异常处理 用于处理 Controller 层的异常,例如:
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<Void> handleException(Exception e) {
// ...
}
}
接收
@Param("") 作用 参数绑定 ,用于传入参数与数据库列名接受参数名称不一致的情况
使用
有多个参数传入mapper.java时,需使用此注解绑定参数
@Param(" name ") String Name
@RequestBody 作用 将 HTTP 请求正文中的数据绑定到控制器方法的参数上。
包含 JSON 数据的 POST 请求到达时,会自动将请求正文中的 JSON 数据转换为java对象,并将其传递给使用的方法
注意
1.驼峰格式的参数传递到后端,@RequestBody注解收不到对应的数据
2.使用@RequestBody 前后端参数要匹配个数不能少。字段名字要一样
解决
1.前端json数据和后端json数据 首字母不要大写,首字母大写映射不上,以驼峰格式命名
2.在属性名上面添加 @JsonProperty("")注解
参数:属性名
@PathVariable 作用 从url中提取 获取网络url中的一部分作为controller方法中的参数,作用到紧随其后的一个参数 htp://localhost:8080/spring-mvc-basics/foos/1,则可以使用 @PathVariable 注解来获取 1 的值
若方法参数名称和需要绑定的url中变量名称一致时,可以简写:
@RequestMapping("/getUser/{name}")
public User getUser(@PathVariable String name){
return userService.selectUser(name);
}
若方法参数名称和需要绑定的url中变量名称不一致时,写成:
@RequestMapping("/getUserById/{name}")
public User getUser(@PathVariable("name") String userName){
return userService.selectUser(userName);
}
@RequestParam(("传入参数") Type 接收参数) 作用 从请求参数中提取 使用 访问 “/greeting?name=John” 时,方法参数 name 的值将被设置为 “John” 获取多个参数时,中间用 , 分隔
@RequestMapping("/greeting")
publicString greeting(@RequestParam("name")String name){
return"Hello, "+ name;
}
@RequestParam @PathVariable区别 @RequestParam 注解用于从请求参数中获取值。例如,如果您有一个 URL,如 http://localhost:8080/spring-mvc-basics/foos?id=1,则可以使用 @RequestParam 注解来获取 id 参数的值。
@PathVariable 注解用于从 URI 路径中提取值。例如,如果您有一个 URL,如 http://localhost:8080/spring-mvc-basics/foos/1,则可以使用 @PathVariable 注解来获取 1 的值。
在 @RequestParam 和 @PathVariable 的上下文中,@RequestParam 的值会被编码,而 @PathVariable 的值不会。这意味着如果您使用 @RequestParam 来获取包含特殊字符的参数值,则该值将被自动解码。但是,如果您使用 @PathVariable 来获取包含特殊字符的路径变量值,则该值将保持原样
编码是指将数据转换为特定格式,以便在网络上传输或存储。在 Web 应用程序中,URL 编码通常用于将 URL 中的特殊字符转换为安全的字符,以便在 HTTP 请求中传输。
例如,空格字符通常会被编码为 %20,+ 字符通常会被编码为 %2B。这样,当您在浏览器中输入包含这些特殊字符的 URL 时,它们会被自动编码,以便安全地传输。
@Valid — 数据校验 用于验证请求参数的合法性,例如:
@PostMapping("/api/user")
public void createUser(@Valid @RequestBody User user) {
// ...
}
@Async — 异步调用 用于实现异步调用,例如:
@Service
public class UserServiceImpl implements UserService {
@Async
public void doSomethingAsync() {
// ...
}
}
发送
@ResponseBody 将 Controller 方法返回的对象转换为 JSON 格式返回给客户端。 通常返回 JSON 或 XML 数据。
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/{id}")
@ResponseBody
public User getUserById(@PathVariable("id") Long id) {
// 通过 ID 获取用户
}
}