标签: apollo

Apollo GraphQL:在 React 子组件中更改默认标头

我想改变我的阿波罗图QL客户端的默认头INSIDE一个反应成分,我根本不能设法找到的文档任何东西。因此,在我的 index.js 中,我按照描述创建并链接了我的客户端,并添加了一个 JWT 令牌标头。但是如果我想更改我的 React 组件中的标头怎么办。例如,我想在重新验证时替换令牌。

在 Axios 中,你可以简单地用它做一些事情。

axios.defaults.headers.common['Auth-Token'] = 'foo bar';
Run Code Online (Sandbox Code Playgroud)

我怎么能用 React Apollo 做这样的事情?这是我的 index.js 的重要部分

const httpLink = createHttpLink({
    uri: 'https://somesecureapi',
});

const authLink = setContext((_, { headers }) => {

const token = localStorage.getItem('token');
return {
    headers: {
        ...headers,
        authorization: token ? `Bearer ${token}` : "",
    }
}
});

const client = new ApolloClient({
    link: authLink.concat(httpLink),
    cache: new InMemoryCache()
});
Run Code Online (Sandbox Code Playgroud)

我尝试导出客户端,然后将其导入组件创建一个新链接并更改旧链接,但这不起作用。

必须有一些更简单的方法。有什么建议

apollo reactjs graphql redux

1
推荐指数
1
解决办法
1621
查看次数

如何在 Jest 测试中处理 .gql 文件导入

我正在尝试测试导入.gql文件的组件。当我尝试在 Jest 文件中构建组件时,我收到此错误:

( object. anonymous function(module exports require __dirname __filename global jest) {
query getUser {                                                
      ˆˆˆˆˆˆˆ
<script>
import GET_USER from 'PATH';
ˆ
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何忽略导入?因为我不需要测试 GraphQL 调用。

apollo jestjs graphql vue-apollo graphql-tag

1
推荐指数
1
解决办法
2927
查看次数

既不是突变也不是查询的 Apollo/GraphQL 操作

有时,您需要 API 来执行不涉及检索或操作数据的操作。例如,发送“忘记密码”电子邮件或与第三方 API 交互。

Apollo(或 GraphQL 本身)是否有推荐的方法来实现这一点?

如果没有,有什么解决方案可以在仍然利用 Apollo 的好处(例如模式/类型检查)的同时实现这一点?

apollo graphql apollo-server

1
推荐指数
1
解决办法
167
查看次数

在 GraphQL 服务器设置中何时使用 Redis 以及何时使用 DataLoader

我已经在 GraphQL 服务器上工作了一段时间,虽然我了解大部分方面,但我似乎无法掌握缓存。

谈到缓存,我看到提到了 DataLoader 和 Redis,但我不清楚什么时候应该使用什么以及如何使用它们。

我认为 DataLoader 在字段级别上更多地用于解决 n+1 问题?我猜 Redis 处于更高的水平呢?

如果有人能对此有所了解,我将不胜感激。

谢谢你。

caching redis apollo graphql apollo-server

1
推荐指数
1
解决办法
953
查看次数

Nuxt:选择默认之外的客户端配置

我正在使用 Nuxt 和Nuxt-Apollo创建我的 Vue 应用程序。我的文件中有以下 apollo 配置nuxt.config.js

apollo: {
    clientConfigs: {
      default: {
        httpEndpoint: 'http://localhost:8000/graphql/'
      },
      stage: {
        httpEndpoint: 'https://example-stage.com/graphql/'
      }
      prod: {
        httpEndpoint: 'https://example.com/graphql/'
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

我如何指向stageprod配置。每次我运行应用程序时,它都指向default配置。必须有我可以设置的地方。

apollo vue.js nuxt.js vue-apollo

1
推荐指数
1
解决办法
1014
查看次数

禁用操场时,阿波罗服务器返回 GET 查询丢失

当我模拟production(aka, playground is disabled) 并转到我的根目录时,http://localhost:9000/我收到以下响应:

400 Bad Request

GET query missing
Run Code Online (Sandbox Code Playgroud)

有没有办法防止这种情况或解决方法来呈现其他页面?

我是阿波罗的新手。我只使用apollo-server(没有快递)。我将不胜感激任何帮助。

apollo graphql apollo-server

1
推荐指数
2
解决办法
4170
查看次数

如何告诉 apollo codegen 查找查询的确切文件

我的项目目录结构是这样的:

- schema.graphql
- package.json
- packages
-- types
--- package.json
--- src
---- graphql-types
----- user.ts
----- generated
Run Code Online (Sandbox Code Playgroud)

现在在这里,schema.graphql包含从apollo client:download-schema. user.ts包含我这样的 graphql 查询:

- schema.graphql
- package.json
- packages
-- types
--- package.json
--- src
---- graphql-types
----- user.ts
----- generated
Run Code Online (Sandbox Code Playgroud)

现在的问题是,我需要为此查询生成类型定义,如果我在代码生成命令中添加文件的确切路径,则 apollo codegen 命令只会选择文件,如下所示:

我想告诉生成器搜索那里的所有 ts 文件。我尝试了以下但都失败了:

export const CURRENT_USER = gql`
  query CurrentUser {
    currentUser {
      id
      name
    }
  }
`;
Run Code Online (Sandbox Code Playgroud)

我总是得到两个错误之一:

No operations or fragments found to generate code for.
Run Code Online (Sandbox Code Playgroud)

或者 …

apollo react-apollo apollo-client

1
推荐指数
1
解决办法
1349
查看次数

[网络错误]:类型错误:网络请求失败

我第一次尝试阿波罗。我的后端服务器是 Phoenix 框架(长生不老药)。并在http://localhost:4000/api 中运行 所以我尝试在我的代码中使用 apollo 进行第一个查询。

import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import ApolloClient from 'apollo-boost';
import { gql } from 'apollo-boost';
const client = new ApolloClient(
  {
    uri: 'http://localhost:4000/api',
  }
);
client.query({
   query: gql`
     { 
        users {
          name
          email
        } 
     `}
}).then(result => console.log(result));
Run Code Online (Sandbox Code Playgroud)

但我有一个错误。

[Network error]: TypeError: Network request failed

    node_modules/expo/build/logs/LogSerialization.js:166:14 in _captureConsoleStackTrace
    node_modules/expo/build/logs/LogSerialization.js:41:24 in serializeLogDataAsync
    ... 9 more stack frames from framework internals

[Unhandled promise rejection: Error: Network error: …
Run Code Online (Sandbox Code Playgroud)

elixir apollo phoenix-framework react-native absinthe

1
推荐指数
1
解决办法
3165
查看次数

在特定路径初始化 ApolloServer

我有这些代码行来初始化 ApolloServer,它工作正常

const server = new ApolloServer({schema, executor});
return server.listen(port).then(({url}) => {});
Run Code Online (Sandbox Code Playgroud)

我想更改 URL,这样做

return server.listen(port).then(({"dev.cold.net"}) => {});
Run Code Online (Sandbox Code Playgroud)

但我有一个编译错误:

TS2339: Property 'dev.cold.net' does not exist on type 'ServerInfo'
Run Code Online (Sandbox Code Playgroud)

node.js typescript apollo graphql apollo-server

1
推荐指数
1
解决办法
619
查看次数

Nuxt Apollo 带有用于基于会话的身份验证的动态标头

Apollo 不会动态存储来自查询的标头。

页面/index.vue

methods: {
  fetchCars() {
    const token = Cookies.get('XSRF-TOKEN')

    console.log(token) //  Token is shown in console

    this.$apollo.query({
      query: gql`
        query {
          cars {
            uuid
            name
          }
        }
      `,
      headers: {
        'X-XSRF-TOKEN': token, // ? Fetch without header
      },
    })
  },
},
Run Code Online (Sandbox Code Playgroud)

有没有办法为每个 Apollo 请求设置新的标头值?

我有一个单独的前端和后端。对于前端,我将 Nuxt.js 与 Apollo 一起使用。我想与我的服务器进行基于会话的通信。出于这个原因,我需要在每个请求中发送 CSRF 令牌。

现在的问题是:在第一次加载页面时,浏览器上没有设置 Cookie。我对 Nuxt 应用程序的每次初始化都执行 GET-Request。

插件/csrf.js

fetch('http://127.0.0.1:8000/api/csrf-cookie', {
  credentials: 'include',
})
Run Code Online (Sandbox Code Playgroud)

现在我设置了一个有效的 Cookie,并希望与 GraphQL Server 通信,但我的标头未在查询中动态设置。有谁知道我该如何解决这个问题?

我的 Laravel 后端现在抛出 419 令牌不匹配异常,因为我没有随请求发送 CSRF 令牌。

链接到存储库:https : //github.com/SuddenlyRust/session-based-auth …

cookies session apollo nuxt.js

1
推荐指数
1
解决办法
2753
查看次数