gpt4 book ai didi

java - 在 UriComponentsBuilder 中使用 Expand() 和直接添加值有什么不同?

转载 作者:太空宇宙 更新时间:2023-11-04 10:48:33 24 4
gpt4 key购买 nike

在 UriComponentsBuilder 中使用 Expand() 和直接添加值有什么不同?

//#1 
String uri = UriComponentsBuilder.fromUriString(someUrl)
.path("/" + var1 + "/path1/" + var2)
.build();
.toUriString();
<小时/>
//#2 
Map<String, Object> pathVariableMap = new HashMap<>();
pathVariableMap.put("var1", "var1");
pathVariableMap.put("var2", "var2");

String uri = UriComponentsBuilder.fromUriString(someUrl)
.path("/{var1}/path1/{var2}")
.buildAndExpand(pathVariableMap)
.toUriString();

所以,为什么我们使用 Expand() 来构建 URI?为了可读性?

最佳答案

来自官方Spring Framework网站,build()buildAndExpand()方法将根据参数执行不同的操作。

案例#1

它将从此构建器中包含的各种组件创建一个 UriComponents 实例。在您的情况下,组件就像 someurl 和路径,这些组件将绑定(bind)在一起并使用 build() 创建 UriComponent 的实例。方法。

案例#2

buildAndExpand(java.util.Map<java.lang.String,?> uriVariables) ,此方法构建 UriComponents 实例并用映射中的值替换 URI 模板变量。

在您的情况下,您的 map 包含

Map<String, Object> pathVariableMap = new HashMap<>();
pathVariableMap.put("var1", "var1");
pathVariableMap.put("var2", "var2");

当您像这样为 UriComponents 创建实例时,

String uri = UriComponentsBuilder.fromUriString(someUrl)
.path("/{var1}/path1/{var2}")
.buildAndExpand(pathVariableMap)
.toUriString();

所以,它将替换键 {var1} 的值 map 上的值 var1 。所以你的路径值就会变成这样 /var1/path1/var2 .

主要区别在于,使用 buildAndExpand() 非常有用。是它们的值仅限于特定元素。

例如:

这个buildAndExpand()当我们想要将模型对象传递给 Spring Controller 时,我们将根据模型对象构建最终的 URI,这将非常有帮助。

欲了解更多信息,UriComponentsBuilder

关于java - 在 UriComponentsBuilder 中使用 Expand() 和直接添加值有什么不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48108124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com