![](/img/trans.png)
[英]How to know if a parameter value is provided in post request body in spring?
[英]Spring GraphQL HttpGraphQlClient - Need to know the exact request body
我正在使用spring-boot-starter-graphql 。 我正在與駐留在另一台服務器上的 GraphQL 端點通信。 除了不記名令牌頭之外,我還使用 GraphQL 端點生成另一種令牌頭,內部稱為 PoP 令牌。 此加密令牌用於驗證請求正文是否未被更改。 該令牌由 http 方法、承載令牌和請求正文生成。
我正在從一個類似於我最好的猜測的字符串生成這個令牌,這可能是由HttpGraphQlClient生成的 JSON 作為下面請求中的請求正文。
不幸的是,我似乎無法確切找出此調用生成的請求正文:
String documentStr = "{\nphoneContactability0: phoneContactability(ruleId:\"2\", phoneNumber:\"1234567892\"){\nphone{\nphoneNumber\nruleValue\n}\n}}";
Object response = httpGraphQlClient.mutate()
.url(url)
.headers(headers -> {
headers.addAll(httpEntity.getHeaders());
})
.build()
.document(documentStr)
.retrieve("phoneContactability0")
.toEntity(Object.class)
.block();
我在 localhost:8080 上運行來自 Eclipse 的代碼。 不幸的是,如果我將以下字符串(以及我嘗試過的其他類似變體)傳遞給生成 PoP 令牌的方法,則生成的令牌將是不正確的。
請求內容類型為 application/json。 我認為它正在發送以下內容:
{"variables":null,"query":"{\nphoneContactability0: phoneContactability(ruleId:\"2\", phoneNumber:\"1234567892\"){\nphone{\nphoneNumber\nruleValue\n}\n}}"}
但是我需要確切地知道請求正在形成什么 JSON 主體,以便端點可以驗證請求主體。
有什么方法可以讓我准確地看到傳遞到目的地的 JSON 正文是什么? 我得到一個帶有嵌套WebClientResponseException的GraphQlTransportException但這些對象都沒有告訴我確切的請求正文是什么。 謝謝
HttpGraphQlClient使用 Spring 類org.springframework.web.reactive.function.client.webclient來執行 http 調用。 您可以在創建 HttpGraphQlClient 時提供自己的 webclient 實例:
https://docs.spring.io/spring-graphql/docs/current-SNAPSHOT/api/org/springframework/graphql/client/HttpGraphQlClient.html
這是關於如何記錄 HTTP 調用的詳盡教程,包括 Spring WebClient 的請求和響應主體: https ://www.baeldung.com/spring-log-webclient-calls
在創建 HttpGraphQlClient 時提供自定義的 webclient 應該可以完成這項工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.