使用提取时清空请求正文

时间:2018-01-16 09:32:37

标签: javascript ajax symfony graphql fetch-api

我试图使用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设置为corsno-corssame-originnavigate:这些都不起作用。

我尝试使用Firefox和Chrome:仍然没有运气。

将内容类型更改为application/graphql似乎也不起作用。

在堆栈溢出和其他地方使用fetch时,我看到很多问题都涉及处理响应和请求中的空体,但找不到任何解决方案似乎都解决了我的问题。

我也尝试了以下,更加粗暴的呼吁,但无济于事。似乎我根本无法使用fetch,原因我无法解释:

fetch('/api', {
    'method': 'post',
    'credentials': 'include',
    'headers': {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    'body': 'test=test',
});

怎么办?我在这里错过了一些简单的东西吗?

2 个答案:

答案 0 :(得分:0)

我现在将GraphQL与React结合使用,而不是直接使用 fetch ,并且大多数情况下效果都很好。

答案 1 :(得分:0)

确保正确发送 Content-TypeAccept 标头。

'Accept': 'application/json',
'Content-Type': 'application/json',