使用React Apollo的凭证批量请求

时间:2017-12-07 20:52:38

标签: cookies graphql apollo react-apollo apollo-client

如何使用凭据批量请求?我使用仅限http的JWT cookie,而HttpLink允许我传递credentials: 'include'选项,该选项将cookie转发到我的石墨烯服务器。当我尝试切换到BatchHttpLink时,它不再接受该配置选项。从源头上看,它并不是一种简单的配置方式。任何人都知道如何处理这个?

这是我没有批处理的方式:

window['app-react'].GRAPHQL_URL = window['app-react'].GRAPHQL_URL || 'http://backend.app.local/graphiql'
const httpLink = new HttpLink({
  uri: window['app-react'].GRAPHQL_URL,
  credentials: 'include'
})
const client = new ApolloClient({
  link: httpLink,
  cache: new InMemoryCache(),
})

以下是我希望它如何运作:

const batchHttpLink = new BatchHttpLink({
  uri: window['joor-react'].GRAPHQL_URL,
  credentials: 'include'
})
const client = new ApolloClient({
  link: batchHttpLink,
  cache: new InMemoryCache(),
})

当我这样做时,JWT cookie不会在标题中传递。

1 个答案:

答案 0 :(得分:0)

apollo-link-batch-http相比,现在apollo-link-http落后于其API。以下是docs(截至2017-12-07)

的说明
  

注意:此软件包将更新以删除对apollo-fetch的依赖,并使用与http-link相同的选项/ API

将BatchHttpLink与apollo-fetch一起使用

如果要对凭据等内容进行自定义,则apollo-link-batch-http的当前API需要自定义apollo-fetch。这里有几个选项。

  1. 提供customFetchcreateApolloFetch并在获取选项中定义credentials
  2. 使用apollo-fetch中间件

    fetch.batchUse(({ options }, next) => {
      options.credentials = 'include';
      next();
    });