簡體   English   中英

Spring GraphQL HttpGraphQlClient - 需要知道確切的請求正文

[英]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 正文是什么? 我得到一個帶有嵌套WebClientResponseExceptionGraphQlTransportException但這些對象都沒有告訴我確切的請求正文是什么。 謝謝

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM