Как добавить заголовки в HttpLink в React Apollo - PullRequest
0 голосов
/ 17 марта 2019

Я хотел ввести токен в мои запросы к GraphQL.Где я должен поставить свой токен аутентификации?

Вот мой код в apollo.js:

import { withData } from 'next-apollo'
import { HttpLink } from 'apollo-link-http'

export const config = {
  link: new HttpLink({
    uri: 'http://localhost:8000/graphql/', // Server URL (must be absolute)
    opts: {
      credentials: 'include', // Additional fetch() options like `credentials` or `headers`
    }
  })
}

export default withData(config)

Вот как я делаю запросы:

const MYJOBS = gql`
  {
    myJobs {
      role {
        name
      }
      school {
        name
      }
    }
  }
`

<Query query={MYJOBS}>

1 Ответ

1 голос
/ 17 марта 2019

Согласно документации apollo-graphql , мы можем сделать это с помощью setContext - установить apollo-link-context и сделать import { setContext } from 'apollo-link-context' в верхней части вашего файла:

const authLink = setContext((_, { headers }) => {
  // get the authentication token from whereever it exists - This is your choice.
  const token = localStorage.getItem('token');
  // return the headers to the context so httpLink can read them
  return {
    headers: {
      ...headers,
      authorization: token ? `Bearer ${token}` : "",
    }
  }
});

const httpLink = new HttpLink({
    uri: 'http://localhost:8000/graphql/', // Server URL (must be absolute)
    opts: {
      credentials: 'include', // Additional fetch() options like `credentials` or `headers`
    }
})

И затем в вашей конфигурации:

export const config = {
  link: authLink.concat(httpLink)
}

Это будет автоматически включать авторизацию / учетные данные для каждого запроса, который мы делаем.

Надеюсь, это полезно.

...