Перехватывать запросы Apollo / graphql - PullRequest
0 голосов
/ 23 мая 2018

мы используем Apollo / Graphql в нашем приложении и столкнулись с проблемой.

Приложение разработано в Angular 5 и NodeJS в качестве бэкэнда с сервером Graphql, который будет реагировать на интерфейс.Чтобы перехватить запрос Http в угловом формате, мы реализуем HttpInterceptor, чтобы мы могли обрабатывать ошибки по своему усмотрению.Но просьба Аполлона не проходит через этот перехватчик.

Для правильной обработки ошибок мы используем 'apollo-link-error'.

Но нам хотелось бы знать, возможно ли перехватывать запросы apollo аналогично HttpInterceptor.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Я думаю, что официальный способ перехвата запросов клиентов Apollo - через Apollo Links.

Однако, если вы используете Angular, это также возможно сделать через HttpInterceptor.Вы можете взглянуть на эту статью, которую я опубликовал на , как управлять токенами доступа / обновления с помощью HttpInterceptor Angular при работе с клиентом Apollo.

Надеюсь, это поможет.

0 голосов
/ 23 мая 2018

Привет, у меня была та же проблема,

красный, который:

Apollo Links создает промежуточное программное обеспечение, которое позволяет вам изменять запросы перед их отправкой на сервер

Промежуточное ПО Apollo

Apollo 2.0 Auth

Вот пример:

import { HttpHeaders } from '@angular/common/http';
import { Apollo } from 'apollo-angular';
import { HttpLink } from 'apollo-angular-link-http';
import { setContext } from 'apollo-link-context';
import { InMemoryCache } from 'apollo-cache-inmemory';

@NgModule({ ... })
class AppModule {
  constructor(
    apollo: Apollo,
    httpLink, HttpLink
  ) {
    const http = httpLink.create({uri: '/graphql'});

    const auth = setContext((_, { headers }) => {
      // get the authentication token from local storage if it exists
      const token = localStorage.getItem('token');
      // return the headers to the context so httpLink can read them
      // in this example we assume headers property exists
      // and it is an instance of HttpHeaders
      if (!token) {
        return {};
      } else {
        return {
          headers: headers.append('Authorization', `Bearer ${token}`)
        };
      }
    });

    apollo.create({
      link: auth.concat(http),
      // other options like cache
    });
  }
}
...