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

Spring MVC中@GetMapping("/v1/**")如何获取完整请求路径?

获取Spring MVC中@GetMapping("/v1/**")的完整请求路径

这里有几种靠谱的方式可以拿到你想要的完整路径,不管是作为方法参数还是局部变量都能实现:

方法1:通过@PathVariable直接捕获(作为方法参数)

你可以把映射路径调整一下,用{fullPath:**}来匹配/v1之后的所有路径,然后通过@PathVariable注解把它绑定到方法参数上:

@RestController
public class MyController {
    // 修改value为/v1/{fullPath:**}
    @GetMapping(value = "/v1/{fullPath:**}", produces = MediaType.TEXT_HTML_VALUE)
    public ModelAndView handle(@PathVariable String fullPath) {
        // 如果需要包含/v1的完整路径,直接拼接即可
        String fullRequestPath = "/v1/" + fullPath;
        // 后续逻辑...
        return new ModelAndView();
    }
}

这种方式最直接,完全符合你想要的作为方法参数获取的需求。

方法2:注入HttpServletRequest获取(局部变量/方法参数)

如果不想修改映射路径,你可以在方法参数里注入HttpServletRequest,然后调用它的API来获取完整路径:

@RestController
public class MyController {
    @GetMapping(value = "/v1/**", produces = MediaType.TEXT_HTML_VALUE)
    public ModelAndView handle(HttpServletRequest request) {
        // 获取完整请求路径(比如http://localhost:8080/v1/foo/bar的话,返回/v1/foo/bar)
        String fullPath = request.getRequestURI();
        // 如果需要包含协议、域名、端口的完整URL,用这个:
        // String fullUrl = request.getRequestURL().toString();
        // 后续逻辑...
        return new ModelAndView();
    }
}

这里getRequestURI()返回的是服务器上的路径部分,getRequestURL()返回的是包含协议、主机和端口的完整URL,你可以根据需求选择。

方法3:使用UriComponentsBuilder(局部变量/方法参数)

另一种更Spring风格的方式是注入UriComponentsBuilder,它可以帮你解析和构建URI:

@RestController
public class MyController {
    @GetMapping(value = "/v1/**", produces = MediaType.TEXT_HTML_VALUE)
    public ModelAndView handle(UriComponentsBuilder uriBuilder) {
        // 获取完整路径(包含/v1及后续子路径)
        String fullPath = uriBuilder.build().getPath();
        // 也可以获取完整URL:
        // URI fullUri = uriBuilder.build().toUri();
        // 后续逻辑...
        return new ModelAndView();
    }
}

这种方式适合你需要对路径做进一步解析(比如拆分参数、路径片段)的场景。

小提示

如果你用的是Spring 5+,还可以考虑用ServerHttpRequest(适用于WebFlux,但Spring MVC也能兼容),不过上面几种方法已经完全覆盖你的需求啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:51:14