Maison interface Web js tutoriel Une brève analyse de la réponse HTTP AngularJs interceptor_AngularJS

Une brève analyse de la réponse HTTP AngularJs interceptor_AngularJS

May 16, 2016 pm 03:23 PM
angularjs 拦截器

Pourquoi utiliser des intercepteurs ?

À tout moment, si nous souhaitons ajouter des fonctionnalités globales à la requête, telles que l'authentification, la gestion des erreurs, etc., c'est une meilleure façon d'intercepter la requête avant qu'elle ne soit envoyée au serveur ou au retour du serveur.

angularJs fournit un moyen de le gérer au niveau global via des intercepteurs

.

L'Intercepteur vous permet de :

Intercepter les requêtes en implémentant la méthode request : Cette méthode sera exécutée avant que $http n'envoie la requête en arrière-plan, afin que vous puissiez modifier la configuration ou effectuer d'autres opérations. Cette méthode reçoit un objet de configuration de requête en paramètre et doit renvoyer un objet de configuration ou une promesse. Si un objet de configuration ou une promesse non valide est renvoyé, il sera rejeté, entraînant l'échec de l'appel $http.

Interceptez la réponse en implémentant la méthode de réponse : cette méthode sera exécutée après que $http aura reçu la réponse de l'arrière-plan, afin que vous puissiez modifier la réponse ou effectuer d'autres opérations. Cette méthode reçoit un objet de réponse en tant que paramètre et doit renvoyer un objet de réponse ou une promesse. L'objet de réponse comprend la configuration de la demande, les en-têtes, l'état et les données en arrière-plan. Si un objet de réponse non valide est renvoyé ou si la promesse est rejetée, l'appel $http échouera.

Interceptez les exceptions de requête en implémentant la méthode requestError : parfois, une requête ne parvient pas à être envoyée ou est rejetée par l'intercepteur. L'intercepteur d'exception de requête capture les requêtes qui ont été interrompues par l'intercepteur de requête précédent. Il peut être utilisé pour restaurer la demande ou parfois pour annuler la configuration effectuée avant la demande, comme fermer la barre de progression, activer les boutons et les zones de saisie, etc.

Interceptez les exceptions de réponse en implémentant la méthode ResponseError : Parfois, notre appel en arrière-plan échoue. Il est également possible qu'il ait été rejeté par un intercepteur de requête ou interrompu par un intercepteur de réponse précédent. Dans ce cas, l'intercepteur d'exception de réponse peut nous aider à reprendre l'appel en arrière-plan.

Le cœur de l'intercepteur est la fabrique de services, qui est ajoutée au tableau $httpprovider.interceptors. Inscrivez-vous dans $httpProvider.

AngularJs fournit quatre intercepteurs, dont deux intercepteurs de succès (requête, réponse) et deux intercepteurs d'échec (requestError, réponseError).

Ajouter un ou plusieurs intercepteurs au service :

angular.module("myApp", []) 
  .factory('httpInterceptor', [ '$q', '$injector',function($q, $injector) { 
    var httpInterceptor = { 
      'responseError' : function(response) { 
        ...... 
        return $q.reject(response); 
      }, 
      'response' : function(response) { 
        ...... 
        return response; 
      }, 
      'request' : function(config) { 
        ...... 
        return config; 
      }, 
      'requestError' : function(config){ 
        ...... 
        return $q.reject(config); 
      } 
    } 
  return httpInterceptor; 
} 
Copier après la connexion

Utilisez ensuite $httpProvider pour enregistrer l'intercepteur dans la fonction .config()

angular.module("myApp", []) 
.config([ '$httpProvider', function($httpProvider) { 
  $httpProvider.interceptors.push('httpInterceptor'); 
} ]); 
Copier après la connexion

Exemple réel : (Interception de 401, 404)

routerApp.config([ '$httpProvider', function($httpProvider) { 
    $httpProvider.interceptors.push('httpInterceptor'); 
  } ]); 
  routerApp.factory('httpInterceptor', [ '$q', '$injector',function($q, $injector) { 
    var httpInterceptor = { 
      'responseError' : function(response) { 
        if (response.status == 401) { 
          var rootScope = $injector.get('$rootScope'); 
          var state = $injector.get('$rootScope').$state.current.name; 
          rootScope.stateBeforLogin = state; 
          rootScope.$state.go("login"); 
          return $q.reject(response); 
        } else if (response.status === 404) { 
          alert("404!"); 
          return $q.reject(response); 
        } 
      }, 
      'response' : function(response) { 
        return response; 
      } 
    } 
    return httpInterceptor; 
  }  
]); 
Copier après la connexion

Injection de session (intercepteur de requête)

Il existe deux manières de mettre en œuvre l'authentification côté serveur. La première est l’authentification traditionnelle basée sur les cookies. L'utilisateur est authentifié pour chaque demande via des cookies côté serveur. Une autre méthode est la vérification basée sur les jetons. Lorsque l'utilisateur se connecte, il obtient un sessionToken en arrière-plan. Le sessionToken identifie chaque utilisateur côté serveur et est inclus dans chaque requête envoyée au serveur.

Le sessionInjector suivant ajoute l'en-tête x-session-token à chaque requête capturée (si l'utilisateur actuel est connecté) :

<!-- lang: js -->
module.factory('sessionInjector', ['SessionService', function(SessionService) {
  var sessionInjector = {
    request: function(config) {
      if (!SessionService.isAnonymus) {
        config.headers['x-session-token'] = SessionService.token;
      }
      return config;
    }
  };
  return sessionInjector;
}]);
module.config(['$httpProvider', function($httpProvider) {
  $httpProvider.interceptors.push('sessionInjector');
}]);
Copier après la connexion

Créez ensuite une demande :

<!-- lang: js -->
$http.get('https://api.github.com/users/naorye/repos');
Copier après la connexion

L'objet de configuration avant d'être intercepté par sessionInjector est comme ceci :

<!-- lang: js -->
{
  "transformRequest": [
    null
  ],
  "transformResponse": [
    null
  ],
  "method": "GET",
  "url": "https://api.github.com/users/naorye/repos",
  "headers": {
    "Accept": "application/json, text/plain, */*"
  }
}
Copier après la connexion

L'objet de configuration après avoir été intercepté par sessionInjector ressemble à ceci :

<!-- lang: js -->
{
  "transformRequest": [
    null
  ],
  "transformResponse": [
    null
  ],
  "method": "GET",
  "url": "https://api.github.com/users/naorye/repos",
  "headers": {
    "Accept": "application/json, text/plain, */*",
    "x-session-token": 415954427904
  }
}
Copier après la connexion

Le contenu ci-dessus vous présente les connaissances pertinentes de l'intercepteur de réponse HTTP AngularJs. J'espère que le partage de cet article pourra vous aider.

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Démystifier le mécanisme d'interception dans Golang Démystifier le mécanisme d'interception dans Golang Apr 08, 2024 am 08:39 AM

Interceptor est un modèle de conception qui permet d'insérer un comportement personnalisé avant et après l'exécution de la méthode. In Go, il peut être implémenté via un middleware net/http. Il présente les avantages d'évolutivité, de réutilisabilité, de testabilité, etc. et peut être utilisé dans des scénarios tels que l'authentification, l'autorisation, la mise en cache, la journalisation et la gestion personnalisée des erreurs.

Les 5 derniers tutoriels Angularjs en 2022, de l'entrée à la maîtrise Les 5 derniers tutoriels Angularjs en 2022, de l'entrée à la maîtrise Jun 15, 2017 pm 05:50 PM

Javascript est un langage tout à fait unique. Il est unique en termes d'organisation du code, de paradigme de programmation du code et de théorie orientée objet. La question de savoir si Javascript est un langage orienté objet a été débattue depuis un certain temps. Il y a évidemment une réponse depuis longtemps. Cependant, même si Javascript est dominant depuis vingt ans, si vous souhaitez comprendre les frameworks populaires tels que jQuery, Angularjs et même React, il suffit de regarder le « Black Horse Cloud Classroom JavaScript Advanced Framework ». Tutoriel vidéo de conception".

Utilisez PHP et AngularJS pour créer un site Web réactif afin d'offrir une expérience utilisateur de haute qualité Utilisez PHP et AngularJS pour créer un site Web réactif afin d'offrir une expérience utilisateur de haute qualité Jun 27, 2023 pm 07:37 PM

À l’ère de l’information d’aujourd’hui, les sites Web sont devenus un outil important permettant aux individus d’obtenir des informations et de communiquer. Un site Web réactif peut s’adapter à divers appareils et offrir aux utilisateurs une expérience de haute qualité, ce qui est devenu un point chaud dans le développement de sites Web modernes. Cet article expliquera comment utiliser PHP et AngularJS pour créer un site Web réactif afin d'offrir une expérience utilisateur de haute qualité. Introduction à PHP PHP est un langage de programmation open source côté serveur idéal pour le développement Web. PHP présente de nombreux avantages, tels que la facilité d'apprentissage, la multiplateforme, la riche bibliothèque d'outils et l'efficacité du développement.

Conseils pour utiliser les intercepteurs de route dans Uniapp Conseils pour utiliser les intercepteurs de route dans Uniapp Dec 17, 2023 pm 04:30 PM

Conseils pour utiliser les intercepteurs de route dans uniapp Dans le développement d'uniapp, les intercepteurs de route sont une fonction très courante. Les intercepteurs de route nous permettent d'effectuer certaines opérations spécifiques avant les sauts de route, telles que la vérification des autorisations, les paramètres de passage de page, etc. Dans cet article, nous présenterons les conseils d'utilisation des intercepteurs de route dans uniapp et fournirons des exemples de code spécifiques. Créer un intercepteur de route Tout d'abord, nous devons créer un intercepteur de route dans le projet uniapp. La méthode de création est la suivante : Créer un inter dans le répertoire racine du projet

Comprendre les principes et les avantages des intercepteurs Spring Comprendre les principes et les avantages des intercepteurs Spring Dec 30, 2023 pm 12:25 PM

Explorez le principe de fonctionnement et les avantages de l'intercepteur Spring Introduction : Le framework Spring est l'un des frameworks les plus couramment utilisés dans le développement Java. Il offre des fonctions riches et une flexibilité, permettant aux développeurs de développer des applications plus efficacement. L'un des composants importants est l'intercepteur. Cet article approfondira les principes de fonctionnement et les avantages des intercepteurs Spring et donnera des exemples de code spécifiques. 1. Comment fonctionne l'intercepteur Spring L'intercepteur Spring utilise une programmation orientée aspect (

Analyse complète des intercepteurs à Golang Analyse complète des intercepteurs à Golang Apr 07, 2024 am 10:18 AM

Dans Golang, les intercepteurs peuvent être utilisés pour insérer du code supplémentaire avant et après l'exécution de la fonction. Les scénarios incluent la journalisation, l'authentification, la mise en cache, etc. Les intercepteurs sont implémentés en créant un type de fonction de gestionnaire, puis en créant la fonction d'intercepteur qui accepte la fonction de gestionnaire et renvoie une nouvelle fonction de gestionnaire contenant une logique supplémentaire. En combat réel, nous pouvons utiliser des intercepteurs pour enregistrer toutes les demandes afin de faciliter le débogage et l'analyse.

Maîtriser les intercepteurs à Golang Maîtriser les intercepteurs à Golang Apr 07, 2024 pm 09:33 PM

Les intercepteurs permettent d'insérer une logique personnalisée dans les applications Go sans modifier le code existant. Ils peuvent être utilisés pour l'authentification, la journalisation, la gestion des erreurs, la surveillance des performances, etc. La création d'un intercepteur nécessite l'implémentation de l'interface Handler, qui définit la méthode ServeHTTP() pour traiter les requêtes HTTP et la méthode Next() pour passer le contrôle. Des exemples pratiques montrent comment utiliser les intercepteurs de journalisation pour enregistrer les chemins d'URL de toutes les requêtes entrantes et comment chaîner plusieurs intercepteurs (tels que les intercepteurs d'authentification) pour créer une logique d'application complexe.

Golang a-t-il un intercepteur ? Golang a-t-il un intercepteur ? Jul 18, 2023 pm 02:23 PM

Golang ne fournit pas d'intercepteur intégré, mais vous pouvez utiliser des fonctionnalités du langage telles que des fonctions, des interfaces et des structures pour obtenir des fonctions similaires. Voici les méthodes d'implémentation d'intercepteur couramment utilisées : 1. Intercepteur fonctionnel, en traitant la requête avant qu'elle n'atteigne. le gestionnaire et son Appelez ensuite la fonction pour implémenter l'intercepteur ;2. Intercepteur d'interface, implémentez l'intercepteur en définissant une interface et en implémentant l'interface avant et après le gestionnaire cible. Cette méthode peut rendre l'intercepteur plus flexible et peut être utilisée dans différents domaines. situations. Implémentez différentes logiques d’intercepteur sur l’interface.

See all articles