我正在嘗試構建一個 url UriComponentsBuilder。
UriComponentsBuilder.fromUriString(BASE)
.pathSegment("api")
.pathSegment("v1")
.queryParam("param1", userId) //userId in null
.queryParam("param2",productId) //productId 12345
.build().toUriString();
我得到的就像預期的一樣。
"http://localhost/api/v1?param1=¶m2=12345"
當這些查詢引數之一為空時,我根本不希望該引數鍵成為 url 的一部分。那么當引數為空時如何動態構造 URL。我期待這樣的事情:
"http://localhost/api/v1?param2=12345"
uj5u.com熱心網友回復:
我認為您可能想要使用UriComponentsBuilder::queryParamIfPresent而不是您當前正在使用的功能。
來自官方檔案:
如果它的值不是 ,此函式將添加一個查詢引數
Optional::empty。如果為空,則根本不會添加該引數。
要將您的null變成Optional,請使用Optional::ofNullable.
代碼示例:
UriComponentsBuilder.fromUriString(BASE)
.pathSegment("api")
.pathSegment("v1")
.queryParamIfPresent("param1", Optional.ofNullable(userId)) // UserId is null
.queryParamIfPresent("param2", Optional.ofNullable(productId)) // ProductId 12345
.build()
.toUriString();
這將導致 URI 不包含param1在其查詢字串中。但是,param2將被添加到查詢字串中,因為它不是空的。
希望這可以幫助你。
干杯!
-T
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/321963.html
