【开发心得】使用UriComponentsBuilder/UriComponents构建请求url
  OIW0KlaMcRRl 2023年11月28日 33 0


前言:

我们在与第三方接口通信的时候,经常需要http调用。不管是httpclient,okhttp,resttemplate再到更牛一些的http客户端。

地址构建与参数拼接是我们逃脱不掉的。

推荐使用 UriComponentsBuilder,包路径为:org.springframework.web.util,这个类的方法有许多,主要围绕如何构建url和传递参数来的。用来解决我们在日常生活中参数拼接的痛苦(或者拼多了,或者拼少了,或者拼错了)。

【开发心得】使用UriComponentsBuilder/UriComponents构建请求url_传递参数

常规的例子:

UriComponents uriComponents=UriComponentsBuilder
        .fromHttpUrl("http://localhost:8080//test")
        .queryParams(params).build() //params是个Map
String uri=uriComponents.toUriString();

模板方式构建:
expand(): 替换参数。
encode(): 编码,默认使用utf-8。

UriComponents uriComponents = UriComponentsBuilder
.fromUriString("http://example.com/hotels/{hotel}/bookings/{booking}").build();
URI uri = uriComponents.expand("42", "21").encode().toUri();

注意:UriComponents是不可变的,expand()和encode()返回新的实例。
上述例子也可以这样实现:

UriComponents uriComponents = UriComponentsBuilder.newInstance()
  .scheme("http").host("example.com").path("/hotels/{hotel}/bookings/{booking}").build()
  .expand("42", "21")
  .encode();

要注意的是expand是一个可变数组的传参,并且要与前边模板写法的参数一一对应。

 

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月28日 0

暂无评论

推荐阅读
OIW0KlaMcRRl