GET:只能用 URL,方式用 路径参数 或 查询参数,不能用 body(语义上不允许)。
DELETE:推荐用 URL,方式用 路径参数 或 查询参数,避免用 body(虽然协议未禁止,但兼容性差)。
POST / PUT / PATCH:主要用 body 传数据,也可附加 URL 参数。
1. 路径参数(http://xx.com/a/123)
@GetMapping("detail/{id}")
public Result<User> detail(@PathVariable("id") String id) {
return Result.success(new User);
}
2. 查询参数(form表单数据提交,也用这个接收)(http://xx.com/a?id=123)
@GetMapping("detail")
public Result<User> detail(String id) {// 隐式
return Result.success(new User);
}
@GetMapping("detail")
public Result<User> detail(@RequestParam String id) {// 显式
return Result.success(new User);
}
3. 查询参数 或 表单数据 自动绑定(http://xx.com/a?id=123&b=2&c=3)
public class UserQuery {
private String name;
private String email;
}
@GetMapping("detail")
public Result<User> detail(UserQuery query) {// 隐式
return Result.success(new User);
}
@GetMapping("detail")
public Result<User> detail(@ModelAttribute UserQuery query) {// 显式
return Result.success(new User);
}
4. 请求体 body
public class User {
private String name;
private Integer age;
private String email;
}
@PostMapping("save")
public Result<Void> save(@RequestBody User user) {
return Result.success();
}