发送POST请求到GraphQL返回400
发送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
我查阅了其他类似的帖子,但似乎无法解决这个问题。
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错误的问题。