Подтвердить что ты не робот

Angularjs $httpProvider документация перехватчика

Я новичок в angular (и программировании), вот простой вопрос, но я не мог понять.

В некоторых учебниках предлагается использовать $httpProvider.interceptors.push('interceptorName') для управления HTTP-запросом и ответом.

Я хочу узнать больше о вещи-перехватчике, поэтому я смотрю на официальный документ, но я не мог найти ничего, связанного с перехватчиком, есть только метод (useApplyAsync ([value]);) и свойство (по умолчанию) в $httpProvider (docs).

Я знаю из других уроков, что перехватчик является регулярной службой factory, и я знаю, как его использовать, но мой вопрос: поскольку синтаксис $httpProvider.interceptors.push('interceptorName'), тогда я ожидаю, что найду свойство, называемое "перехватчики" "в $httpProvider, но на самом деле я не могу. Мне что-то не хватает, чтобы получить это замешательство? или моя концепция совершенно неправильная со дна?

4b9b3361

Ответ 1

Перехватчики находятся в документации здесь.

Вот пример того, как его написать.

.config([
  '$httpProvider',
  function($httpProvider) {

    var interceptor = [
      '$q',
      '$rootScope',
      'userSession',
      function($q, $rootScope, userSession) {

        var service = {

          // run this function before making requests
          'request': function(config) {

            if (config.method === 'GET' || userSession.isAuth()) {
              // the request looks good, so return the config
              return config;
            }

            // bad request, so reject
            return $q.reject(config);

          }

        };

        return service;

      }
    ];

    $httpProvider.interceptors.push(interceptor);

  }
])

Причина, по которой на странице $httpProvider о перехватчиках нет ничего плохого, потому что разработчики не включили следующий код в $http script, который docs генерируется из:

/**
   * @ngdoc property
   * @name $httpProvider#interceptors
   * @description
// etc

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

Самая надежная "документация" - это исходный код, хотя он может быть намного менее дружелюбным к чтению! В исходном коде, указанном выше, вы можете увидеть this.interceptors = []. this относится к $httpProvider, поэтому он присваивает свойство interceptors $httpProvider со значением, являющимся пустым массивом. Чтобы добавить свои перехватчики, вы просто push() ваш перехватчик в этот массив.