gpt4 book ai didi

graphql - GraphQL 上的 POST 返回 400 BAD REQUEST

转载 作者:行者123 更新时间:2023-12-01 00:26:09 28 4
gpt4 key购买 nike

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

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 、类型、内容类型都很好 - 其他带有查询或突变的 POST 效果很好。我已经花了几个小时试图使这项工作,但没有效果。

解决方案
我知道了。引号前应该有双斜线而不是一个。

最佳答案

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

将来,为了使请求更容易,您可以将查询和变量作为单独的字段发送:

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

...

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

关于graphql - GraphQL 上的 POST 返回 400 BAD REQUEST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44774673/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com