Я против использования перехватчика для манипулирования HTTP-запросом в Angular проекте, если только он не является абсолютно необходимым и не будет изменен для разных запросов ресурсов или конечных точек.
В вашем случае это явно не так потому что вы хотите, чтобы заголовок авторизации был удален в одном конкретном c запросе.
Конечно, вы можете сделать несколько глупых настроек, чтобы быстро заставить его работать, например
if (currentUser && !request.url.includes('www.googleapis.com/books/v1/volumes')) {
request = request.clone({
setHeaders: {
Authorization: `Bearer ${currentUser.split('"')[3]}`
}
});
}
Но я бы хотел Рекомендую создать собственную службу angular вместо манипулирования глобальными запросами с помощью перехватчика.
Таким образом, вместо вызова this.httpClient.get()
, теперь вы вызываете this.myApiService.get()
вместо этого, просто оборачивая службу HttpClient
некоторыми дополнительными business logi c в соответствии с вашими потребностями.
Затем, когда вы хотите отключить отправку заголовка авторизации, укажите этот флаг в своем собственном методе и используйте его примерно так:
this.myApiService.get('my-resource', { noAuth: true });
This более удобен в сравнении с перехватчиком Blackbox, который иногда сводит ваших коллег с ума.