3 回答

TA貢獻1111條經(jīng)驗 獲得超0個贊
您可以利用UriBuilder.
webTestClient.get()
.uri(uriBuilder ->
uriBuilder
.path("/v3/callback")
.queryParam("state", "cGF5bWVudGlkPTRiMmZlMG")
.build())
.exchange()
.expectStatus()
.isOk();
這應(yīng)該有效。

TA貢獻1829條經(jīng)驗 獲得超6個贊
如果您的查詢參數(shù)值包含大括號,例如如下所示:
webTestClient.get()
.uri(uriBuilder -> uriBuilder
.path("/v3/callback")
.queryParam("query", "{ some { GraphQL { query } } }")
.build())
.exchange()
.expectStatus()
.isOk();
然后UriBuilder將嘗試對大括號的內(nèi)容進行變量替換,您可能會在調(diào)用時遇到異常build()。為了避免這種情況,請將請求參數(shù)放在單獨的requestParams映射中,并通過build(requestParams)在構(gòu)建時調(diào)用來使用受控變量替換URI:
var requestParams = Map.of(
"query", "{ some { GraphQL { query } } }"
);
webTestClient.get()
.uri(uriBuilder -> uriBuilder
.path("/v3/callback")
.queryParam("query", "{query}")
.build(requestParams))
.exchange()
.expectStatus()
.isOk();
另一個提示。如果您發(fā)現(xiàn).uri(uriBuilder -> ...)語法有點復(fù)雜,您可以URI在請求之前顯式準(zhǔn)備:
var requestParams = Map.of(
"query", "{ some { GraphQL { query } } }"
);
URI uri = new DefaultUriBuilderFactory("/v3/callback")
.builder()
.queryParam("query", "{query}")
.build(requestParams);
webTestClient.get()
.uri(uri)
.exchange()
.expectStatus()
.isOk();
如果事先準(zhǔn)備好 -在調(diào)試器中URI檢查生成的內(nèi)容或記錄它會更容易。URI

TA貢獻1828條經(jīng)驗 獲得超3個贊
以下是上述內(nèi)容的 Kotlin 示例
val requestParams = LinkedMultiValueMap<String, String>()
requestParams.add("A", "abc")
requestParams.add("B", "def")
requestParams.add("C", "ghi")
val uri = UriComponentsBuilder.fromPath("/v3/callback").queryParams(requestParams).build().toUri()
webTestClient.get().uri{uri}.exchange().expectStatus().isOk
添加回答
舉報