当前位置: 首页 > 知识库问答 >
问题:

React Native Apollo客户端GraphQL突变返回400错误

赫连卓
2023-03-14
Error: Network error: Response not successful: Received status code 400
    at new ApolloError (bundle.umd.js:76)
    at bundle.umd.js:952
    at bundle.umd.js:1333
    at Array.forEach (<anonymous>)
    at bundle.umd.js:1332
    at Map.forEach (<anonymous>)
    at QueryManager.broadcastQueries (bundle.umd.js:1327)
    at bundle.umd.js:901
    at tryCallOne (core.js:37)
    at core.js:123
const createItem = gql`{
  mutation {
    createItem(title: "Banana", summary: "Santa", campaignId: 1, pinId: 1) {
      id
    }
  }
}`;

client.query({query: createItem}).then((resp) => {
  console.log('query answer');
  console.log(resp);
}).catch((error) => {
  console.log('error');
  console.log(error);
});
import { ApolloClient } from 'apollo-client';
import { HttpLink } from 'apollo-link-http';
import { setContext } from 'apollo-link-context';
import { InMemoryCache } from 'apollo-cache-inmemory';

let bearer_token = '';

const httpLink = new HttpLink({ uri: 'http://localhost:3000/graphql/' });

const authLink = setContext((_, { headers }) => {
  // get the authentication token from local storage if it exists
  const token = bearer_token;
  // return the headers to the context so httpLink can read them
  return {
    headers: {
      ...headers,
      authorization: token ? `Bearer ${bearer_token}` : "",
    }
  }
});

const client = new ApolloClient({
  link: authLink.concat(httpLink),
  cache: new InMemoryCache()
});

export function setToken(token) {
  bearer_token = token;
}

export default client;

在后端,我进行了调试,并收到了请求,它根据客户机上设置的令牌查找用户,但随后什么也不做,只在我试图从应用程序发送时返回给我400,在graphiql浏览器上。

我错过了什么?非常感谢。

共有1个答案

姚嘉容
2023-03-14

正如Daniel指出的,我的gql有一个额外的括号,但这不是问题所在,我实际上应该使用mutate函数而不是query。文档显示了query的示例,但我没有找到mutate的示例,因此产生了混淆。

const createItem = gql`
mutation {
  createItem(title: "Banana", summary: "Santa", campaignId: 1, pinId: 1) {
    id
  }
}`;

并使用它:

client.mutate({mutation: createItem}).then((resp) => {
  console.log(resp)
}).catch((error) => {
  console.log(error)
});

希望这对其他GraphQL初学者有帮助!

 类似资料:
  • 所有和任何建议将非常感谢!谢谢你! 发布http://localhost:3000/GraphQL 400(错误请求)[GraphQL错误]:消息:变量“$email”未定义。,位置:[object object],[object object],路径:未定义 [GraphQL错误]:消息:变量“$LocationCity”未定义。,位置:[object object],[object objec

  • 我目前使用vue-apollo包为Apollo客户机,使用VueJs堆栈,使用django和graphene-python为我的GraphQl API。 下面是vue-apollo的一个简单设置: 返回以下错误响应: 然而,在我的vue应用程序中,常规查询可以很好地解决正确的响应,除了突变,所以这让我真的很困惑

  • 我尝试执行Graphql客户端查询。遗憾的是,我找不到任何关于如何使用动态图QL客户端进行简单变异的文档或示例。这是文件https://quarkus.io/guides/smallrye-graphql-client. {0}..{4} 是可变占位符。有人知道如何使用DynamicGraphlQlClient执行这个查询吗? 谢谢

  • 在此处为客户端凭据流使用Spotify文档: 我能够在谷歌应用程序脚本(Javascript)中创建API请求。 我对两件事感到困惑,请能够回答这两件事。 1). Spotify文档声明在授权标头中的客户端凭据之前输入“Basic”。 然而,当我运行这段代码时,我得到了这个错误 如果我在使用客户端凭据流,为什么它认为我在使用承载令牌?(同样,如果我将身份验证更改为Bearer,我会收到401错误“

  • 我在服务器上使用GraphQL和mongoose。 当发生验证错误时,GraphQL突变发送状态代码为200的响应。在客户端,响应如下所示: 我想使用阿波罗客户端突变promise的功能访问验证错误。类似: 如何做到这一点?

  • 我试图自动化Web服务,并以字符串的形式传递XML,然后将其转换为字符串实体并设置实体。但我不知道为什么会抛出400错误。我是WebServices Automation的新手,请在这方面帮助我。 以下是我的代码: