我试图使用fetch
从React组件到PHP服务器进行graphql调用。这是我第一次尝试使用fetch
。
我在浏览器端使用React JS,在服务器端使用Symfony 4。然而,即使我的浏览器开发工具似乎表明数据已发送,我的所有调用都会在服务器端出现空主体。
使用graphiql时,请求成功。我尽可能地尝试模仿来自React的graphiql请求,但是正文总是空白。
这是电话:
fetch('/api', {
'method': 'post',
'credentials': 'include',
'headers': {
'Content-Type': 'application/json',
},
'body': JSON.stringify({
"query": "mutation {UpdateActionStatus(input: {actionId: 61, status: TO_DO}) { id }}",
"variables": null
}),
}).then(r => {
console.log(r.json());
return r.json();
}).catch(error => {
console.log('There has been a problem with your fetch operation: ', error.message);
});
我尝试将mode
设置为cors
,no-cors
,same-origin
,navigate
:这些都不起作用。
我尝试使用Firefox和Chrome:仍然没有运气。
将内容类型更改为application/graphql
似乎也不起作用。
在堆栈溢出和其他地方使用fetch
时,我看到很多问题都涉及处理响应和请求中的空体,但找不到任何解决方案似乎都解决了我的问题。
我也尝试了以下,更加粗暴的呼吁,但无济于事。似乎我根本无法使用fetch,原因我无法解释:
fetch('/api', {
'method': 'post',
'credentials': 'include',
'headers': {
'Content-Type': 'application/x-www-form-urlencoded',
},
'body': 'test=test',
});
怎么办?我在这里错过了一些简单的东西吗?
答案 0 :(得分:0)
我现在将GraphQL与React结合使用,而不是直接使用 fetch ,并且大多数情况下效果都很好。
答案 1 :(得分:0)
确保正确发送 Content-Type
和 Accept
标头。
'Accept': 'application/json',
'Content-Type': 'application/json',