HTTP请求参数类型及对应的后端注解

发布于:2025-08-18 ⋅ 阅读:(16) ⋅ 点赞:(0)

在Java后端开发中,HTTP请求的不同部分需要使用不同的注解来处理。以下是四种主要请求参数类型及其对应的Spring注解:

1. 请求头(Headers)

  • ​位置​​:HTTP请求的头部信息

  • ​常用场景​​:认证信息(Token)、客户端信息、内容类型等

  • ​Spring注解​​:

    • @RequestHeader- 获取单个请求头

    • @RequestHeader Map<String, String>- 获取所有请求头

@GetMapping("/example")
public ResponseEntity<?> example(
    @RequestHeader("Authorization") String authToken,
    @RequestHeader Map<String, String> headers) {
    // 使用authToken和headers
}

2. 请求体(Body)

  • ​位置​​:HTTP请求的主体内容

  • ​常用场景​​:POST/PUT请求的JSON/XML数据

  • ​Spring注解​​:

    • @RequestBody- 将请求体反序列化为Java对象

@PostMapping("/users")
public ResponseEntity<User> createUser(
    @RequestBody UserCreateDTO userDTO) {
    // 处理userDTO
}

3. 路径参数(Path Variables)

  • ​位置​​:URL路径中的变量部分

  • ​常用场景​​:RESTful API的资源标识

  • ​Spring注解​​:

    • @PathVariable- 获取路径中的变量

@GetMapping("/users/{userId}")
public ResponseEntity<User> getUser(
    @PathVariable Long userId) {
    // 根据userId查询用户
}

4. 查询参数(Query Parameters)

  • ​位置​​:URL中?后面的键值对

  • ​常用场景​​:过滤条件、分页参数等

  • ​Spring注解​​:

    • @RequestParam- 获取单个查询参数

    • @RequestParam Map<String, String>- 获取所有查询参数

    • @RequestParam(required = false)- 可选参数

    • @RequestParam(defaultValue = "default")- 带默认值

@GetMapping("/products")
public ResponseEntity<List<Product>> getProducts(
    @RequestParam String category,
    @RequestParam(required = false) String sortBy,
    @RequestParam(defaultValue = "1") int page) {
    // 根据参数查询产品
}

综合使用示例

@RestController
@RequestMapping("/api/v1")
public class UserController {
    
    @PutMapping("/users/{id}/status")
    public ResponseEntity<?> updateUserStatus(
        @PathVariable Long id,
        @RequestHeader("X-Auth-Token") String token,
        @RequestBody StatusUpdateDTO updateDTO,
        @RequestParam(defaultValue = "false") boolean notify) {
        
        // 验证token
        // 更新用户状态
        // 如果需要则发送通知
        
        return ResponseEntity.ok().build();
    }
}

其他相关注解

  1. @ModelAttribute

    • 用于绑定请求参数到命令对象

    • 常用于表单提交

  2. @CookieValue

    • 用于获取Cookie值

  3. ​参数校验注解​​(需配合@Valid使用)

    • @NotNull, @Size, @Pattern

最佳实践建议

  1. RESTful API设计:

    • 资源标识用路径参数(@PathVariable)

    • 过滤条件用查询参数(@RequestParam)

    • 创建/更新数据用请求体(@RequestBody)

  2. 安全性:

    • 敏感信息(如认证token)应放在请求头

    • 不要用GET请求发送敏感数据

  3. 可读性:

    • 参数名要有意义

    • 可选参数要设置required=false或默认值

  4. 版本控制:

    • 建议在请求头或路径中包含API版本信息

这些注解是Spring MVC/WebFlux中最常用的参数绑定方式,掌握它们可以高效地处理各种HTTP请求。


网站公告

今日签到

点亮在社区的每一天
去签到