为了账号安全,请及时绑定邮箱和手机立即绑定

在spring webflux中使用uri()时如何保留baseUrl

在spring webflux中使用uri()时如何保留baseUrl

噜噜哒 2022-06-23 10:20:42
使用 spring boot 2.1.3.RELEASE,将在传递to方法时WebClient停止使用提供的。当一个字符串被传递给它时它会保留。baseUrlURIuri()baseUrluri()我怎样才能提供一个baseUrl并通过一个URI?public WebClient webClient() {  return WebClient.builder()    .baseUrl("https://example.com/")    .build();}和webClient.get().uri(URI.create("/foo/%23bar"))... 投掷java.lang.IllegalArgumentException:URI 不是绝对的:并且请求网址变为request url: /foo/%23bar
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

如果您传递新的 URI 对象,则会覆盖基本 URI。您应该使用uri带有 lambda 作为参数的方法,例如:


final WebClient webClient = WebClient

  .builder()

  .baseUrl("http://localhost")

  .build();

webClient

  .get()

  .uri(uriBuilder -> uriBuilder.pathSegment("api", "v2", "json", "test").build())

  .exchange();


查看完整回答
反对 回复 2022-06-23
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

稍微不同的方式 -在现有 uri 对象上使用path而不是pathSegment 。它有助于以配置/常量形式方便地维护路径。


final WebClient webClient = WebClient

.builder()

.baseUrl("http://localhost")

.build();

webClient

.get()

.uri(uriBuilder -> uriBuilder.path("api/v2/json/test").build())

.exchange();


查看完整回答
反对 回复 2022-06-23
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

一旦你UriBuilderFactory通过调用设置了一个像你一样的baseUrl(String uri)方法,添加所需分支的最简单方法是使用 uri(String uri,Object... uriVariables)签名,而不指定第二个参数,因为它声明为 varargs 然后可以是 0 长度。


在您的情况下,它只是简化为:


public WebClient webClient() {

  return WebClient.builder()

    .baseUrl("https://example.com")

    .build();

}


webClient.get().uri("/foo/bar")


查看完整回答
反对 回复 2022-06-23
  • 3 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信