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=123URI 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");
