簡體   English   中英

如何在 Java 客戶端代碼中為 Graphql 執行突變?

[英]How to execute a mutation for Graphql in a Java Client Code?

這是我的架構

type Mutation{
createUser(username: String!, email: String!, tempPassword: String!): ComplexCallResult
        @aws_iam
}

我正在使用 AmazoneWebServicesClient 執行查詢。 對於已經在模式中定義的查詢,我在發布請求正文中輸入如下

  private String queryAllUsers = "{\n" +
            "    \"query\": \"{listUsers {name}}\",\n" +
            "    \"variables\": null,\n" +
            "    \"operationsName\": null\n" +
            "}";

現在我想運行類似於上面的突變。 我的輸入查詢是

{ "mutation":"{createUser(email: "test@lb.de", tempPassword: "LPwd!", username: "testUser1") { Exception Success}}" }

在 Java 代碼中:

  private String testCreateUserInputQuery= "{\n" +
            "    \"mutation\":\"{createUser(email: \\\"test@lb.de\\\", tempPassword: \\\"LPwd!\\\", username: \\\"testUser10\\\") {  Exception  Success}}\"\n" +
            "}";

但這不起作用。 請提供任何線索

編輯:我正在更新我在這里所做的事情:

這是我最新的嘗試,但不起作用。

private String testCreateUserInputQuery= "{\n" +
            "    \"query\":\"{mutation($username:String!,$email:String!,$tempPassword:String!) {createUser(username:$username,email:$email,tempPassword:$tempPassword) { Exception  Success }}}\", \"variables\":{\"input\":{\"username\":\"testUser11\",\"email\":\"test@lb.de\",\"tempPassword\":\"L123!\"  }  }\n" +
            "    }";

也試過這樣:

  private String testCreateUserInputQuery= "{\n" +
            "    \"query\":\"{mutation createUser($username:String!,$email:String!,$tempPassword:String!) {createUser(username:$username,email:$email,tempPassword:$tempPassword) { Exception  Success }}}\", \"variables\":{\"input\":{\"username\":\"testUser11\",\"email\":\"test@lb.de\",\"tempPassword\":\"L123!\"  }  }\n" +
            "    }";

我收到如下異常

{"errors":[{"message":"Unable to parse GraphQL query.","errorType":"MalformedHttpRequestException"}]} (Service: appsync; Status Code: 400; Error Code: MalformedHttpRequestException; Request ID: af42c6eb-dd5f-401e-9cac-530e9c62df71; Proxy: null)

無法找到錯誤所在,也沒有任何線索。 我已經筋疲力盡了。

無法使用 Postman 或 Insomnia 來試用此 API,因為這是我的組織的工作,並且該 API 由 AWS IAM 保護。 我還沒有獲得在 Postman 或 Insomnia 中測試這一點的憑據。 我只能通過代碼來測試它。

private String testCreateUserInputQuery=" {\n" +
            "    \"query\":\"mutation { createUser(username: \\\"testUser12\\\",email:\\\"test@lb.de\\\",tempPassword:\\\"tempPassword123!\\\") { Exception  Success }}\"\n" +
            "    }";

對於使用變量的查詢,以下一個對我有用

private String testCreateUserInputQuery= "{\n" + " \"query\":\"mutation User($uname: String!,$mail:String!,$tempPwd:String!) { createUser(username: $uname,email:$mail,tempPassword:$tempPwd) { Exception Success }}\", \"variables\":{\"uname\":\"testUser20SK\",\"mail\":\"test@lb.de\",\"tempPwd\":\"LPassword123!\"} \n" + " }";

我不得不不必要地掙扎來做這個手術。 Insomnia 工具會自動將 GraphQL 查詢轉換為 JSON 查詢。 復制並粘貼或編寫您的 GraphQL 查詢,保持輸入模式格式為 GraphQL。 完成后,選擇 JSON。 您的 GraphQL 查詢將自動轉換為 JSON 查詢格式。

感謝視頻中提供的幫助: https ://youtu.be/AaD03fv6q-o。 只為像我一樣需要幫助的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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