如何使用UriComponentsBuilder为现有URI路径前置添加前缀?
解决方案
你可以通过replacePath()方法替换原有路径来实现前缀拼接,具体实现代码如下:
UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromUriString("/foo?name=john"); // 获取原有路径,拼接前缀后替换 String originPath = uriComponentsBuilder.build().getPath(); uriComponentsBuilder.replacePath("/bar" + originPath); String uri = uriComponentsBuilder.build().toUriString(); // 最终输出 /bar/foo?name=john
如果要兼容斜杠重复的异常场景(比如前缀末尾带斜杠、原路径开头无斜杠的情况),可以用以下写法自动处理路径拼接规则:
UriComponentsBuilder originBuilder = UriComponentsBuilder.fromUriString("/foo?name=john"); UriComponents newUri = UriComponentsBuilder.fromPath("/bar") .path(originBuilder.build().getPath()) .queryParams(originBuilder.build().getQueryParams()) .build(); String uri = newUri.toUriString();
内容的提问来源于stack exchange,提问作者johnlinp
相关产品推荐
相关产品推荐

