发送POST请求到GraphQL返回400

14 浏览
0 Comments

发送POST请求到GraphQL返回400

这是我的代码:

const result = await axios({
      url: "https://exampleurl.com",
      method: 'POST',
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
      },
      data: {
        query: `query {
                  footer {
                    title
                }
              }`,
      },
    })

这个调用不需要任何变量。

所以这给了我一个400的错误,让我觉得我的请求体有问题?但我看不出有什么问题。也许我眼瞎了。

我也尝试过像这样将数据对象转化为字符串:

JSON.stringify({
        query: `query {
                  footer {
                    title
                }
              }`,
      }),

但然后我得到了这个错误:

"stack": "TypeError: 将循环结构转换为JSON\n    -->
从构造函数为'ClientRequest'的对象开始\n    |     属性
'socket' -> 构造函数为'Socket'的对象\n    --- 属性
'_httpMessage' 闭合了循环\n    at JSON.stringify

我查阅了其他类似的帖子,但似乎无法解决这个问题。

0
0 Comments

POST请求到GraphQL返回400的问题出现的原因是由于axios对象过大,与自定义的日志记录器发生冲突。解决方法是仅记录result.data。以下是详细的解决方法:

// 引入axios库
const axios = require('axios');
// 定义GraphQL请求
const query = `
  query {
    // 请求的具体内容
  }
`;
// 发送POST请求到GraphQL
axios.post('http://example.com/graphql', { query })
  .then((result) => {
    console.log(result.data); // 仅记录result.data
  })
  .catch((error) => {
    console.error(error);
  });

通过以上方法,我们可以成功发送POST请求到GraphQL,并正确获取响应数据。这样做的好处是避免了axios对象过大导致与自定义的日志记录器冲突,从而解决了返回400错误的问题。

0