【问题标题】:POST on GraphQL returns 400 BAD REQUESTGraphQL 上的 POST 返回 400 BAD REQUEST
【发布时间】:2017-11-30 04:14:00
【问题描述】:

我想发布一个更新字段“名称”的突变,它是 JSONString。当我这样做时,我得到了一个响应 - 400 BAD REQUEST,但是当我尝试其他突变(字段类型为字符串)时,它会顺利进行,结果正是我想要的。

function updateUserData() {
    var xhr = new XMLHttpRequest(),
        token = "BTNsngsfgfstnrw64wNsrgnws"

    var mutation = `mutation {
        addPosition( input: {
            name: "{\"pl\": \"Devlo\"}"
        }) {
            result {
                name
            }
        }
    }`;

$.ajax({
    beforeSend: (xhr) => xhr.setRequestHeader('Authorization', 'Basic ' + token),
    type: 'POST',
    url: 'http://46.17.113.45/graphql',
    data: JSON.stringify({ 'query': 'mutation { addPosition( input: { name: "{\\"p\\": \\"Develo\\"}" }) { result { name 
    contentType: 'application/json'
    }).done(function(response) {
        console.log(response)
});}

在 GraphiQL 中,这种突变效果很好。返回值是查询中的确切内容。 JSONString 和那些引号有问题,还是其他地方有问题?令牌、类型、内容类型都很好——其他带有查询或突变的 POST 效果很好。我已经花了几个小时试图完成这项工作,但没有任何效果。

解决方案 我得到了它。引号前应该有双斜杠而不是一个。

【问题讨论】:

    标签: graphql bad-request


    【解决方案1】:

    太好了,你能找到你的错误。 这可能是由于包含字符串化 JSON 的粗略查询导致的一些 JSON 解析错误。

    将来,为了更轻松地提出请求,您可以将查询和变量作为单独的字段发送:

    var mutation = `
      mutation MyMutation($input: AddPositionInput!) {
        addPosition(input: $input) {
          result {
              name
          }
        }
      }
    `;
    
    ...
    
    $.ajax({
      ...
      data: JSON.stringify({
        query: mutation,
        variables: {
          input: {
            name: {
              p: "Develo",
            },
          },
        },
      }),
      ...
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      • 2020-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多