AngularJS Intercepter tous les $http réponses JSON
J'ai une application à l'aide AngularJS et côté serveur backend qui offre toutes les demandes en JSON forme. Chaque demande est enveloppé dans un JSON conteneur qui contient une variable de données qui contient les données spécifiques à la demande. Les autres données, qui sont utilisés pour garder le contrôle et d'état au sein de l'application, vérifier les erreurs et les messages de réussite, et de vérifier pour la session de drapeaux. L'ensemble de ces autres variables sont servis avec CHAQUE demande et sont examinés en premier avant que les données variable.
Droit maintenant, j'ai une méthode pour examiner le contenu de la réponse JSON en premier, puis les données lui-même.
$http.get('something.json').success(function(response) {
var data = examineJSONResponse(response);
//do the data stuff
});
Cela fonctionne et le examineJSONResponse prend un coup d'oeil au code et s'il ya quelque chose de mal, puis elle lève une exception et recharge la page à l'aide de la fenêtre.emplacement.href.
Est-il possible que je peux automatiser ce dans AngularJS, de sorte que chaque fois qu'un $http appel est fait, alors il vérifie ce et retourne UNIQUEMENT la variable de données contenu de la réponse JSON?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez intercepter les réponses apportées par l'ajout d'un intercepteur à
$httpProvider.interceptors
Angulaire 1.1.4+ (voir la documentation ici de recherche pour les intercepteurs).Pour un type de contenu spécifique comme json, vous pouvez éventuellement refuser les modifications ou lever une exception, même si l'appel a été un succès. Vous pouvez modifier le
response.data
qui sera transmis à votre contrôleur de code ici:REMARQUE: est Ici l'original de la réplique pour les versions antérieures à 1.1.4 (
responseInterceptors
ont été désapprouvées Angulaire 1.1.4):Peut-être il ya une meilleure façon, mais je pense que vous pouvez faire quelque chose de similaire à ce post avec la réponse http intercepteur (décrit ici) (pour un type de contenu spécifique comme json) où vous pouvez potentiellement refuser les modifications ou lever une exception, même si l'appel a été un succès. Vous pouvez modifier le
response.data
qui sera transmis à votre contrôleur de code ici.Une autre solution est de créer un service et d'utilisation autour de l' $http variable.
Et maintenant, cela peut être appelée comme:
service
méthode doit être une fonction constructeur, comme expliqué dans ce fil dans la AngularJS liste de diffusion. Je pense que vous avez probablement censé typefactory
au lieu deservice
et qui serait à l'œuvre.factory
. C'est maintenant mis à jour. Je vous remercie.