You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中REST接口GET请求URL传递多个重复参数值的实现方法

一、多值参数传参合规性说明

你采用的重复同名status参数的传参方式完全符合HTTP URL查询参数规范,属于GET请求传递同参数多值的标准实现方案:

  • HTTP协议本身没有限制查询参数的命名唯一性,服务端默认会将同名的多个参数值收集为数组/集合进行解析
  • 你示例中的&是&的HTML转义写法,仅在HTML页面中嵌入URL时需要使用,直接发起HTTP请求时直接用&作为参数分隔符即可,两种写法在对应场景下都是合规的
  • 除此之外也可以用逗号分隔的单参数写法status=2,3,但重复同名参数的兼容性更好,所有主流服务端框架都原生支持解析
二、Java生态中多值GET参数的实现方案

下面是几种常用场景的实现方式:

1. Spring Boot / Spring MVC 场景

直接用参数绑定

在控制器方法中直接将对应参数声明为数组或List类型,Spring会自动完成多值封装:

@RestController
public class SearchController {
    @GetMapping("/search")
    public String doSearch(@RequestParam List<Integer> status, @RequestParam String date) {
        // status会自动拿到所有传入的status参数值,示例中为[2,3]
        return "查询完成,status列表:" + status;
    }
}

如果参数需要非必传,可配置@RequestParam(required = false),也可以设置默认值。

实体类封装接收

如果参数较多可以封装为请求实体,直接在实体中声明集合类型字段:

// 实体类
@Data
public class SearchRequest {
    private List<Integer> status;
    private String date;
}

// 控制器绑定
@GetMapping("/search")
public String doSearch(SearchRequest request) {
    List<Integer> statusList = request.getStatus();
    // 业务逻辑处理
}

2. JAX-RS 实现(Jersey/RESTEasy等)

使用@QueryParam注解直接声明集合类型参数即可:

@Path("/search")
public class SearchResource {
    @GET
    public Response doSearch(@QueryParam("status") List<Integer> status, @QueryParam("date") String date) {
        return Response.ok("status值列表:" + status).build();
    }
}

3. 原生Servlet场景

调用HttpServletRequest的getParameterValues方法获取同名参数的所有值:

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    String[] statusArray = request.getParameterValues("status");
    String date = request.getParameter("date");
    // 自行将statusArray转换为需要的类型即可
}

4. 调用外部多值参数接口(RestTemplate示例)

如果是你要调用其他提供多值参数的GET接口,用MultiValueMap封装参数即可:

MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("status", 2);
params.add("status", 3);
params.add("date", "2021110");
String result = restTemplate.getForObject("https://localhost.com:8080/search", String.class, params);

内容的提问来源于stack exchange,提问作者Aditya Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:06:03