Node Fetch Post 使用 Graphql 查询请求

Node Fetch Post Request using Graphql Query

我正在尝试使用 GraphQL 查询发出 POST 请求,但它返回错误 Must provide query string,即使我的请求在 PostMan 中有效。

这是我在 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 属性被格式化为 Text 就像我在 PostMan 请求的正文中指定的那样?

正文应包含 query 属性,其中包含查询字符串。还可以传递另一个 variable 属性,以便为查询提交 GraphQL 变量。

这应该适用于您的情况:

const url = `http://localhost:3000/graphql`;
const query = `
  {
    users(name: "Thomas") { 
      firstName
      lastName 
    } 
  }
 `

return fetch(url, { 
  method: 'POST',
  Header: {
     'Content-Type': 'application/graphql'
  }
  body: 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)
})

我创建了 a complete example on GitHub