如何在 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 执行查询。对于已经在模式中定义的查询,我在 post 请求正文中输入如下

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

现在我想 运行 与上面类似的突变。我的输入查询是

{ “突变”:“{createUser(电子邮件:“test@lb.de”,tempPassword:“LPwd!”,用户名:“testUser1”){异常成功}}” }

在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。完成后,select JSON。您的 GraphQL 查询将自动转换为 JSON 查询格式。

感谢视频中提供的帮助:https://youtu.be/AaD03fv6q-o。只为像我一样需要帮助的人。