2017-06-27 135 views
2

我想POST一個更新JSONString字段「name」的變量。當我這樣做時,我得到了一個響應 - 400 BAD REQUEST,但是當我嘗試其他變體(字段類型爲String)時,它會變得平滑,結果正是我想要的。GraphQL上的POST返回400不良請求

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和這些引號是否存在問題,或者問題在其他位置? token,type,contentType是很好的 - 其他帶有查詢的POST或者突變很好。我已經花了幾個小時試圖做這項工作,但沒有效果。

解決方案 我明白了。報價前應該有雙斜槓而不是一個。

回答

0

很棒,你能找到你的錯誤。 這可能是由於包含字符串JSON的粗略查詢導致的一些JSON解析錯誤。

在未來,並讓用戶輕鬆的請求,您可以把您的查詢和你的變量作爲單獨的領域:

var mutation = ` 
    mutation MyMutation($input: AddPositionInput!) { 
    addPosition(input: $input) { 
     result { 
      name 
     } 
    } 
    } 
`; 

... 

$.ajax({ 
    ... 
    data: JSON.stringify({ 
    query: mutation, 
    variables: { 
     input: { 
     name: { 
      p: "Develo", 
     }, 
     }, 
    }, 
    }), 
    ... 
}); 
相關問題