3 回答

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

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

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
以下是上述內(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
添加回答
舉報(bào)