UriComponents Spring MVC 和 Spring WebFlux 都适用
UriComponentsBuilder 有助于从带有变量的 URI 模板中构建 URI,如下例所示:
UriComponents uriComponents = UriComponentsBuilder
.fromUriString("https://example.com/hotels/{hotel}") // 具有 URI 模板的静态工厂方法。
.queryParam("q", "{q}") // 添加或替换 URI 组件
.encode() // 要求对 URI 模板和 URI 变量进行编码
.build(); // 构建一个 UriComponents
// 展开变量到 URI 中
// 构建出来的地址为:https://example.com/hotels/Westin?q=123
URI uri = uriComponents.expand("Westin", "123").toUri();
前面的例子可以合并成一条链,并用 buildAndExpand 来缩短,如下图所示:
URI uri = UriComponentsBuilder
.fromUriString("https://example.com/hotels/{hotel}")
.queryParam("q", "{q}")
.encode()
.buildAndExpand("Westin", "123")
.toUri();
你可以通过直接进入 URI(这意味着编码)来进一步缩短它,如下例所示:
URI uri = UriComponentsBuilder
.fromUriString("https://example.com/hotels/{hotel}")
.queryParam("q", "{q}")
.build("Westin", "123");
你还可以用一个完整的 URI 模板进一步缩短它,如下例所示:
URI uri = UriComponentsBuilder
.fromUriString("https://example.com/hotels/{hotel}?q={q}")
.build("Westin", "123");