1
var app = angular.module('app');
// register the interceptor as a service
app.factory('myHttpInterceptor', function($q ) {
    return {

        'request': function(config) {
            return config;
        }
    };
});

API呼び出しのURLを変更し、API URLを各サービス関数に挿入されたインターセプターのajax呼び出しの先頭に追加しようとしています

    function getAssesmentResults(params) {

        return $http.get(url.api + '/results', {params: params})
            .then(function(response) {
                return response.data;
            });
    }

ただし、インターセプターは、.css、.html、または .json ファイルなどのすべての http 要求をインターセプトします。他の http リクエストを変更せずにインターセプターの URL を変更する良い方法は何ですか?

4

3 に答える 3

1

をラップするサービスを作成します$http。次に、コードでは常にこのラップを代わりに呼び出し$http、リクエストが送信される前に必要なことを行うことができます。簡単な例:

module.factory('myHttp', function($http){
  return {
    get: function(url, params){
      var newUrl = "base-api-url/" + url;
      return $http.get(newUrl, params);
    }
  }
})
于 2015-10-09T13:32:56.587 に答える
0

これには汎用サービスを使用します。

汎用サービス

appCless.factory("$comum", function($http, $q, $injector) {
    function ajax(url, parametros, metodo) {
        var requisicao = $http({
            method: metodo,
            url: url,
            data:parametros
        });

        var promessa = requisicao.then(
            function(resposta) {
                return(resposta.data);
            },
            function(resposta) {
                return($q.reject("Something went wrong"));
            }
        );
        return promessa;
    }
    return({
        ajax:ajax
    });
});

サービス

app.factory("$categoriaproduto", function($comum) {
    var categoria;
    return {
        buscar : function(neoId) {
            var promessa = $comum.ajax("/fusion/services/roi/category/product/search", "", "POST");
            promessa.then(function(req) {  
                categoria = req.data;
            });
            return promessa;
        },
        cache : function() {
            return categoria;
        }
    };
});
于 2015-10-09T13:36:18.283 に答える