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

Spring Boot调用带LocalDateTime参数的GET API提示参数缺失

问题解决:GET请求LocalDateTime参数缺失错误

错误原因

GET请求的参数需放在URL查询字符串中,你当前代码把参数塞进了HttpEntity的body里,但Spring的RestTemplate处理GET请求时不会解析body内容作为查询参数,导致接口接收不到restrictProfileDate参数,触发缺失错误。

另外你的调用代码存在变量未定义问题:dateValue应该是前面声明的deltascreeningDate。

修正后的调用代码

方法1:用UriComponentsBuilder构建带查询参数的URL(推荐)

HttpHeaders headers = new HttpHeaders();   
LocalDate deltascreeningDate = LocalDate.now();
// 修正未定义的dateValue变量
Date date = Date.from(deltascreeningDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formattedDate = sdf.format(date);

// 构建带查询参数的请求地址,自动处理URL编码
UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromUriString(apiEndPoint)
        .queryParam("restrictProfileDate", formattedDate);

// GET请求无需传入body,仅传递headers即可
ResponseEntity<String> response = restTemplate.exchange(
        uriBuilder.toUriString(), 
        HttpMethod.GET, 
        new HttpEntity<>(headers), 
        String.class
);

方法2:直接拼接URL(不推荐,存在编码风险)

// 其他代码不变,直接拼接参数到URL末尾
String urlWithParams = apiEndPoint + "?restrictProfileDate=" + formattedDate;
ResponseEntity<String> response = restTemplate.exchange(
        urlWithParams, 
        HttpMethod.GET, 
        new HttpEntity<>(headers), 
        String.class
);

补充说明

  • 你的接口代码中@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")配置正确,只要参数格式匹配就能正常解析为LocalDateTime。
  • 优先使用UriComponentsBuilder,它会自动处理参数的URL编码,避免特殊字符引发的请求异常。
  • 错误信息翻译:

WARN o.s.w.s.m.s.DefaultHandlerExceptionResolver - 已解析 [org.springframework.web.bind.MissingServletRequestParameterException: 必需的LocalDateTime参数'restrictProfileDate'不存在]

内容的提问来源于stack exchange,提问作者Parth Atara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:02:34