拦截请求和有效负载变化

时间:2015-09-21 14:31:42

标签: angularjs angular-http-interceptors

我有这样的服务:

(function() {
'use strict';

angular
    .module('app.bookmark')
    .factory('bookmarkService', bookmarkService);

function bookmarkService($http){

        var url = 'api/bookmark';

        bookmarkService.update = function(bookmark){
            return $http.put(url + '/' + bookmark.id, bookmark);
        };

        return bookmarkService;

}})();

我想拦截方法PUT上的请求,发送没有ID属性的有效负载,因为我已经拥有了URL的属性。

我创建了这些功能:

function httpInterceptor($q) {
    return {
        request : function(config) {
            if(config.method === 'PUT'){
                delete config.data.id;
            }
            return config || $q.when(config);
        }
    };
}

问题是在屏幕(表单)上删除了 id 属性。假设用户想要永远保持多次改变同一记录数据的情况。

1 个答案:

答案 0 :(得分:1)

制作配置数据的副本,而不是更改原始对象。

function httpInterceptor($q) {
    return {
        request : function(config) {
            config = angular.copy(config);

            if(config.method === 'PUT'){
                delete config.data.id;
            }
            return config || $q.when(config);
        }
    };
}