springboot前后端参数传递方式总结

参数传递方式总结

1. 路径参数(Path Variables)

前端请求示例:

GET /api/items/123

后端接收写法:

@GetMapping("/api/items/{id}")
public ResponseEntity<?> getItem(@PathVariable("id") Long itemId) {
    // 处理逻辑
    return ResponseEntity.ok("Item ID: " + itemId);
}

省略注解的情况:
@PathVariable 注解不能省略。路径参数必须显式标注以绑定 URL 中的部分到方法参数。

2. 请求体参数(Request Body)

前端请求示例:

POST /api/items
Content-Type: application/json

{
    "name": "itemName",
    "price": 100
}

后端接收写法:

@PostMapping("/api/items")
public ResponseEntity<?> createItem(@RequestBody ItemDto item) {
    // 处理逻辑
    return ResponseEntity.ok("Item created: " + item.getName());
}

省略注解的情况:
@RequestBody 注解不能省略。需要明确地将请求体内容绑定到方法参数。

3. 请求头参数(Request Headers)

前端请求示例:

GET /api/items
Content-Type: application/json
Authorization: Bearer some-token

后端接收写法:

@GetMapping("/api/items")
public ResponseEntity<?> getItems(@RequestHeader("Authorization") String authHeader) {
    // 处理逻辑
    return ResponseEntity.ok("Auth Header: " + authHeader);
}

省略注解的情况:
@RequestHeader 注解不能省略。必须明确地将请求头中的值绑定到方法参数。

4. 查询参数(Query Parameters)

前端请求示例:

GET /api/items?id=101&status=1

后端接收写法:

@GetMapping("/api/items")
public ResponseEntity<?> getItems(@RequestParam("id") Long id, @RequestParam("status") Integer status) {
    // 处理逻辑
    return ResponseEntity.ok("ID: " + id + ", Status: " + status);
}

省略注解的情况:
当查询参数名称和控制器方法参数名称相同时,@RequestParam 可以省略。例如:

@GetMapping("/api/items")
public ResponseEntity<?> getItems(Long id, Integer status) {
    // 处理逻辑
    return ResponseEntity.ok("ID: " + id + ", Status: " + status);
}

注意事项:

  • 如果查询参数是必需的且必须提供默认值,仍然需要使用 @RequestParam 注解并指定 required 属性和 defaultValue 属性。
  • 在需要自定义参数名或处理复杂类型时,也需要使用 @RequestParam

总结

  • 路径参数和请求头参数:必须显式使用 @PathVariable@RequestHeader 注解。
  • 请求体参数:必须显式使用 @RequestBody 注解。
  • 查询参数:当参数名与方法参数名相同时,可以省略 @RequestParam 注解;否则,必须使用 @RequestParam
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值