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

Postman请求中如何正确传入UUID类型的路径变量id?

UUID类型路径参数传参400问题解决

问题复现场景

接口定义如下:

@RequestMapping(method = RequestMethod.GET, path = "/{id}", produces = "application/json")
public  ResponseEntity<T> getId(@PathVariable("id") final UUID id) {

}

Postman调试时,传入纯UUID字符串4df34f48-33ce-4da2-8eba-a682e2d1e698、带大括号包裹的{4df34f48-33ce-4da2-8eba-a682e2d1e698}均返回400 Bad Request。

核心原因

  1. Spring内置UUID转换器默认仅识别标准无修饰UUID字符串,即格式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx的纯字符串,带大括号、带urn:uuid:前缀的格式会直接触发类型转换失败。
  2. Postman传参时路径拼接错误是最高发的诱因:
    • 未正确替换URL中的{id}占位符,比如把参数写到Query参数区(?id=xxx格式),@PathVariable不会读取Query区参数,会直接报路径不匹配。
    • 手动给参数值加了多余的引号、转义符,或者路径多写/少写斜杠,导致路径匹配失败。
  3. 项目自定义MVC转换器、拦截器篡改了路径参数,或使用的Spring版本存在UUID转换已知bug,也会触发该问题。

正确操作步骤

  • 直接拼接URL时,去掉所有多余修饰,把UUID值直接替换路径中的{id}占位即可,示例:
    http://localhost:8080/你的接口前缀/4df34f48-33ce-4da2-8eba-a682e2d1e698
    
    不要保留占位符的大括号,不要给UUID加引号、括号等额外符号。
  • 使用Postman的Path Variables功能传参时,在Params面板的Path Variables分类下,给id键填入不带任何修饰的纯UUID字符串,确保键名和URL里的占位符名称完全一致。
  • 如果需要兼容带大括号的UUID传参格式,自定义String转UUID的转换器注册到Spring容器即可,参考代码:
    @Component
    public class StringToUUIDConverter implements Converter<String, UUID> {
        @Override
        public UUID convert(String source) {
            if (source == null || source.isBlank()) return null;
            String uuid = source.trim();
            if (uuid.startsWith("{") && uuid.endsWith("}")) {
                uuid = uuid.substring(1, uuid.length() - 1);
            }
            return UUID.fromString(uuid);
        }
    }
    
  • 上述操作无效时,排查自定义拦截器、过滤器是否修改了请求路径,升级Spring到稳定版本即可解决低版本兼容问题。

注意:@PathVariable注解仅从URL路径段读取参数,不要把参数拼到URL的?后面作为查询参数传递。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:18:40