get请求和post请求

​​特性​​ ​​GET​​ ​​POST​​
​​参数位置​​ URL 查询参数 请求体(Body)
​​数据复杂度​​ 仅支持简单键值对 支持嵌套对象、数组等复杂结构
​​安全性​​ 参数暴露在 URL 和浏览器历史记录 参数隐藏,适合敏感数据
​​缓存​​ 可被浏览器缓存 默认不缓存

Get请求示例:

点击查看代码
@GetMapping("/by-category")
    public ResponseEntity<Page<Policy>> getPoliciesByCategories(
            @RequestParam("categoryIds") List<String> categoryIds,
            @RequestParam(value = "keyword", required = false) String keyword,
            @RequestParam(value = "timeRange", required = false) String timeRange,
            @RequestParam(value = "policyRange", required = false) String policyRange,
            @RequestParam(defaultValue = "0") int page,
            @RequestParam(defaultValue = "10") int size) {

        return ResponseEntity.ok(
                policyService.getPoliciesByCategories(
                        categoryIds,
                        keyword,
                        timeRange,
                        policyRange,
                        PageRequest.of(page, size)
                )
        );
    }

改为Post请求示例:

点击查看代码

@PostMapping("/by-category")
public ResponseEntity<Page<Policy>> getPoliciesByCategories(
        @RequestBody CategorySearchRequest request) {
    
    return ResponseEntity.ok(
            policyService.getPoliciesByCategories(
                    request.getCategoryIds(),
                    request.getKeyword(),
                    request.getTimeRange(),
                    request.getPolicyRange(),
                    PageRequest.of(request.getPage(), request.getSize())
            )
    );
}

// 1. 创建DTO接收请求参数
@Data
public class CategorySearchRequest {
    private List<String> categoryIds;
    private String keyword;
    private String timeRange;
    private String policyRange;
    private int page = 0;
    private int size = 10;
}

实际应用建议​​
​​优先使用 GET​​:

适合简单、幂等的查询(如关键词搜索、分页)。
利用浏览器缓存提升性能。
​​使用 POST 的场景​​:

参数复杂(如多级筛选、范围查询)。
需要隐藏敏感数据(如 API 密钥)。
查询条件超过 URL 长度限制。
​​RESTful 设计​​:

遵循 GET 用于查询、POST 用于创建资源的语义化原则。
对复杂查询,可设计专用端点如 /api/advanced-search,使用 POST 传递参数。

posted @ 2025-04-03 22:40  雨花阁  阅读(21)  评论(0)    收藏  举报