GraphQLクエリを使用してPOSTリクエストを作成しようとしていますが、リクエストがPostManで機能していても、エラーMust provide query string
が返されます。
PostManで実行する方法は次のとおりです。
そして、これが私のアプリケーションで実行しているコードです:
const url = `http://localhost:3000/graphql`;
return fetch(url, {
method: 'POST',
Accept: 'api_version=2',
'Content-Type': 'application/graphql',
body: `
{
users(name: "Thomas") {
firstName
lastName
}
}
`
})
.then(response => response.json())
.then(data => {
console.log('Here is the data: ', data);
...
});
私が間違っていることについて何か考えはありますか? fetch
リクエストで渡すbody属性がPostManリクエストのbodyで指定したようにText
としてフォーマットされるようにすることは可能ですか?
本文には、クエリ文字列を含むquery
プロパティが必要です。別のvariable
プロパティを渡して、クエリのGraphQL変数を送信することもできます。
これはあなたの場合にうまくいくはずです:
const url = `http://localhost:3000/graphql`;
const query = `
{
users(name: "Thomas") {
firstName
lastName
}
}
`
return fetch(url, {
method: 'POST',
Accept: 'api_version=2',
'Content-Type': 'application/graphql',
body: JSON.stringify({ query })
})
.then(response => response.json())
.then(data => {
console.log('Here is the data: ', data);
...
});
GraphQL変数を送信する方法は次のとおりです。
const query = `
query movies($first: Int!) {
allMovies(first: $first) {
title
}
}
`
const variables = {
first: 3
}
return fetch('https://api.graph.cool/simple/v1/cixos23120m0n0173veiiwrjr', {
method: 'post',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({query, variables})
})
.then(response => response.json())
.then(data => {
return data
})
.catch((e) => {
console.log(e)
})
私は GitHubの完全な例 を作成しました。