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

如何使用UriBuilder直接传入完整基础URI 无需单独指定scheme、host等参数

解决方案

完全可以直接使用完整基础URI字符串构造URI,无需手动拆分各部分,Spring生态提供了原生支持,以下是两种常用的实现方式:

方案1:动态加载数据库返回的基础URI

如果每次请求的基础URI都需要从数据库动态获取、不固定,可直接通过UriComponentsBuilder.fromUriString()方法加载完整基础URI,再拼接后续动态路径参数即可,示例代码如下:

// 从数据库查询得到的完整基础URI
String baseUri = "https://example.com/mypage";

final String response = myWebClient.get()
   .uri(uriBuilder -> UriComponentsBuilder.fromUriString(baseUri)
        .path("/{id}.xml")
        .build(id))
   .header(AUTHORIZATION, getAuthorizationHeaderValue(username, password))
   .accept(MediaType.TEXT_XML)
   .retrieve()
   .bodyToMono(String.class)
   .block();

方案2:初始化WebClient时统一配置基础URI

如果该基础URI是全局固定的,可在初始化WebClient实例时直接配置baseUrl,后续业务调用时只需传入相对路径即可,简化重复代码:

// 初始化WebClient时统一配置基础路径
WebClient myWebClient = WebClient.builder()
        .baseUrl(baseUriFromDb)
        .build();

// 业务调用时只需传动态路径部分
final String response = myWebClient.get()
   .uri("/{id}.xml", id)
   .header(AUTHORIZATION, getAuthorizationHeaderValue(username, password))
   .accept(MediaType.TEXT_XML)
   .retrieve()
   .bodyToMono(String.class)
   .block();

注意事项

拼接路径时建议新增路径开头添加斜杠,避免基础URI末尾无斜杠时出现拼接错误,也可使用pathSegment方法构造路径,Spring会自动处理路径分隔符的兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:24:01