web-dev-qa-db-fra.com

angularjs $ httpProvider interceptor documentation

Je suis nouveau à angular (et programmation), voici une question apparemment simple mais je n'ai pas pu le comprendre.

certains didacticiels suggèrent d'utiliser $httpProvider.interceptors.Push('interceptorName') pour manipuler la requête et la réponse http.

Je veux en savoir plus sur la chose intercepteur, donc je regarde le document officiel, mais je n'ai rien trouvé concernant l'intercepteur, il n'y a qu'une méthode (useApplyAsync ([valeur]);) et une propriété (par défaut) dans $httpProvider ( documents ).

Je sais par d'autres didacticiels qu'un intercepteur est une fabrique de services réguliers et je sais comment l'utiliser, mais ma question est la suivante: puisque la syntaxe est $httpProvider.interceptors.Push('interceptorName'), je m'attends à ce que je trouve une propriété appelée "intercepteurs" dans $httpProvider, mais en fait je ne peux pas. Est-ce quelque chose qui me manque pour obtenir cette confusion? ou mon concept est-il totalement faux par le bas?

15
webberpuma

Les intercepteurs sont dans la documentation ici .

Voici un exemple de comment en écrire un.

.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);

  }
])

La raison pour laquelle il n'y a rien sur la page de documentation $httpProvider Sur les intercepteurs est parce que les développeurs n'ont pas inclus le code suivant dans le script $http Qui les documents sont générés à partir de :

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

La documentation en général est connue pour être incomplète, inexacte et/ou déroutante. Jusqu'à récemment, j'ai toujours pensé que j'étais le problème quand je ne pouvais pas trouver ou comprendre quelque chose, mais j'ai constaté que c'est souvent parce que la documentation est tout simplement moche. Cependant, nous devrions tous être reconnaissants d'avoir de si bons outils à utiliser et garder à l'esprit que la documentation est peut-être médiocre car le temps a dû être consacré à l'écriture de l'outil au lieu du manuel de l'outil.

La "documentation" la plus fiable est le code source lui-même, bien qu'il puisse être beaucoup moins convivial à lire! Dans le code source que j'ai lié ci-dessus, vous pouvez voir this.interceptors = []. this fait référence au $httpProvider, il assigne donc la propriété interceptors à $httpProvider, la valeur étant un tableau vide. Pour ajouter vos intercepteurs, il vous suffit de Push() votre intercepteur à ce tableau.

24
m59