Apollo GraphQL 客户端格式化请求不正确

里德

我有一个在 React Native 中运行的 Apollo GraphQL 客户端。它连接到运行graphQL的 lambda 实例我的问题是我正在尝试向服务器发送 mutate 请求(尚未设置查询),并且服务器收到以下信息并声明语法错误(Expected Name, found String \"operationName\")。

当我测试 graphQL 服务器时,请求看起来像下面指定的那些。Apollo Client 是否没有正确格式化请求(如果是,为什么不正确)或者它是否按预期运行?

从 Apollo 客户端发送到 graphQL lambda 的正文:

{
"operationName": "createUser",
"variables": {
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "[email protected]",
    "username": "jane_doe.com",
    "provider": "none"
    "jwt": "none"
},
"query": "mutation createUser($firstName: String!, $lastName: String!, $email: String!, $username: String!, $provider: String, $jwt: String!) { 
createUser(firstName: $firstName, lastName: $lastName, email: $email, username: $username, provider: $provider, jwt: $jwt) {
    createdAt
    __typename
}
}"}

来自 Postman 的正常请求。

mutation {
  createUser(firstName: "Jane", lastName: "Doe", email: "[email protected]", username: "jane_doe.com", jwt: "none", provider: "none") {
    firstName
  }
}

来自本机应用程序的代码

// The mutation in the render function
<Mutation mutation={createUserMutation}>
  {(createUser, error) => {
    console.log('error-----------', error);
    // If there is an error throw the error
    if (error) {
      console.log('error----------', error);
    }
    if (createUser) {
      // If the response has data load the response data via the createPlayer property.
      return (
        <LoginButton
          onPress={() => {
            this.signIn(createUser);
          }}
        />
      );
    }

    // By default it is loading the result so just return loading...
    return <Text>Loading...</Text>;
  }}
</Mutation>

// The signin function called when the user presses the login button
async signIn(createUser) {
  ...
  try {
    Auth.signIn(un, password)
      .then(data => {
        ...
        this.createUserFunc(
          createUser,
          'Jane',
          'Doe',
          '[email protected]',
          'jane_doe.com',
          'none',
          'none'
        );
   }
   ...
}

// The create user function called from the signin function
createUserFunc = (func, firstName, lastName, email, username, provider, jwt) => {
  const newUser = {
    firstName,
    lastName,
    email,
    username,
    provider,
    jwt,
  };
  func({variables: newUser});
};

// The gql syntax mutation
const createUserMutation = gql`
  mutation createUser(
    $firstName: String!
    $lastName: String!
    $email: String!
    $username: String!
    $provider: String
    $jwt: String!
  ) {
    createUser(
      firstName: $firstName
      lastName: $lastName
      email: $email
      username: $username
      provider: $provider
      jwt: $jwt
    ) {
      createdAt
    }
  }
`;

赫尔库

大多数接受 HTTP 请求的 GraphQL 服务器正在侦听两种不同类型的内容(用Content-Type 标头表示):application/graphqlapplication/json. 您的服务器似乎只收听带有application/graphql正文的请求

问题Content-Type: application/graphql在于GraphQL 执行最多包含三个可由客户端提供的参数:

  1. 查询(必填)
  2. 查询的变量值
  3. 操作名称

这使查询文档完全静态。但是如果请求的内容只是 GraphQL 查询,其他参数就需要去别的地方了。理论上,它们可以作为 GET 参数提供,但通常所有客户端都使用 JSON 格式来提供此处概述的所有三个参数

正如 Daniel 所指出的,您可以使用 GraphQL 服务器实现作为您选择的框架/技术来为您处理。或者,您必须自己对请求的标头做出反应(这可能是一个很好的练习,但您可能会错过图书馆作者已经想到的边缘情况)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Graphql响应不是来自Apollo客户端查询

来自分类Dev

前端的用户角色/权限-React / GraphQL / Apollo客户端

来自分类Dev

如何从 Apollo graphql 客户端状态检索值

来自分类Dev

Apollo客户端3:如何在客户端上为graphql接口实现缓存?

来自分类Dev

使用graphql-code-generator生成React / Apollo钩子时,数组类型是否不正确?

来自分类Dev

Apollo GraphQL客户端查询返回自省结果而不是数据

来自分类Dev

如何使用Apollo Graphql React客户端访问本地解析器中的获取策略

来自分类Dev

使用graphql和apollo客户端刷新用于角度的令牌

来自分类Dev

没有Apollo或Relay之类的库,浏览器客户端如何使用GraphQL订阅?

来自分类Dev

Apollo GraphQL加载查询

来自分类Dev

Apollo GraphQL 订阅

来自分类Dev

Graphql | Apollo客户| 如何更改现有订阅中的变量?

来自分类Dev

如何在Apollo GraphQL中提出foreach请求?

来自分类Dev

React Apollo GraphQL Mutation 返回 400(错误请求)

来自分类Dev

无法在 GraphQL Apollo Client 中读取正确的查询

来自分类Dev

将Strapi连接到NextJS / Apollo客户端GraphQL-未提供所需类型“ XXX”的变量“ $ input”

来自分类Dev

Apollo / GraphQL突变可以在GraphIQL中工作,但不能在客户端代码中工作吗?

来自分类Dev

如何使用 Apollo Graphql 客户端和 React 解决“TypeError:无法读取未定义的属性“params”?

来自分类Dev

Apollo Graphql修改输入数据

来自分类Dev

Apollo GraphQL解构数据无效

来自分类Dev

Apollo GraphQL合并缓存的数据

来自分类Dev

带参数的Apollo graphql查询

来自分类Dev

如何在仅1个请求中减少3个graphQL Apollo请求

来自分类Dev

什么是 'Symbol(isOptimistic): false | true' 表示在 AppSync、Graphql、Apollo 上发送突变请求时

来自分类Dev

React和Nexus Graphql服务器上的Apollo客户端出现“必须提供查询字符串”错误

来自分类Dev

与像GraphQL Modules这样的本地模块化库相比,Apollo Federation有什么好处?

来自分类常见问题

Apollo GraphQL Server中标量的指令

来自分类常见问题

Apollo GraphQL React-如何点击查询

来自分类Dev

Apollo GraphQL查询中的缺少字段

Related 相关文章

  1. 1

    Graphql响应不是来自Apollo客户端查询

  2. 2

    前端的用户角色/权限-React / GraphQL / Apollo客户端

  3. 3

    如何从 Apollo graphql 客户端状态检索值

  4. 4

    Apollo客户端3:如何在客户端上为graphql接口实现缓存?

  5. 5

    使用graphql-code-generator生成React / Apollo钩子时,数组类型是否不正确?

  6. 6

    Apollo GraphQL客户端查询返回自省结果而不是数据

  7. 7

    如何使用Apollo Graphql React客户端访问本地解析器中的获取策略

  8. 8

    使用graphql和apollo客户端刷新用于角度的令牌

  9. 9

    没有Apollo或Relay之类的库,浏览器客户端如何使用GraphQL订阅?

  10. 10

    Apollo GraphQL加载查询

  11. 11

    Apollo GraphQL 订阅

  12. 12

    Graphql | Apollo客户| 如何更改现有订阅中的变量?

  13. 13

    如何在Apollo GraphQL中提出foreach请求?

  14. 14

    React Apollo GraphQL Mutation 返回 400(错误请求)

  15. 15

    无法在 GraphQL Apollo Client 中读取正确的查询

  16. 16

    将Strapi连接到NextJS / Apollo客户端GraphQL-未提供所需类型“ XXX”的变量“ $ input”

  17. 17

    Apollo / GraphQL突变可以在GraphIQL中工作,但不能在客户端代码中工作吗?

  18. 18

    如何使用 Apollo Graphql 客户端和 React 解决“TypeError:无法读取未定义的属性“params”?

  19. 19

    Apollo Graphql修改输入数据

  20. 20

    Apollo GraphQL解构数据无效

  21. 21

    Apollo GraphQL合并缓存的数据

  22. 22

    带参数的Apollo graphql查询

  23. 23

    如何在仅1个请求中减少3个graphQL Apollo请求

  24. 24

    什么是 'Symbol(isOptimistic): false | true' 表示在 AppSync、Graphql、Apollo 上发送突变请求时

  25. 25

    React和Nexus Graphql服务器上的Apollo客户端出现“必须提供查询字符串”错误

  26. 26

    与像GraphQL Modules这样的本地模块化库相比,Apollo Federation有什么好处?

  27. 27

    Apollo GraphQL Server中标量的指令

  28. 28

    Apollo GraphQL React-如何点击查询

  29. 29

    Apollo GraphQL查询中的缺少字段

热门标签

归档