UriComponents Spring MVC 和 Spring WebFlux 都适用

    UriComponentsBuilder 有助于从带有变量的 URI 模板中构建 URI,如下例所示:

    1. UriComponents uriComponents = UriComponentsBuilder
    2. .fromUriString("https://example.com/hotels/{hotel}") // 具有 URI 模板的静态工厂方法。
    3. .queryParam("q", "{q}") // 添加或替换 URI 组件
    4. .encode() // 要求对 URI 模板和 URI 变量进行编码
    5. .build(); // 构建一个 UriComponents
    6. // 展开变量到 URI 中
    7. // 构建出来的地址为:https://example.com/hotels/Westin?q=123
    8. URI uri = uriComponents.expand("Westin", "123").toUri();

    前面的例子可以合并成一条链,并用 buildAndExpand 来缩短,如下图所示:

    1. URI uri = UriComponentsBuilder
    2. .fromUriString("https://example.com/hotels/{hotel}")
    3. .queryParam("q", "{q}")
    4. .encode()
    5. .buildAndExpand("Westin", "123")
    6. .toUri();

    你可以通过直接进入 URI(这意味着编码)来进一步缩短它,如下例所示:

    1. URI uri = UriComponentsBuilder
    2. .fromUriString("https://example.com/hotels/{hotel}")
    3. .queryParam("q", "{q}")
    4. .build("Westin", "123");

    你还可以用一个完整的 URI 模板进一步缩短它,如下例所示:

    1. URI uri = UriComponentsBuilder
    2. .fromUriString("https://example.com/hotels/{hotel}?q={q}")
    3. .build("Westin", "123");