如何在ngResource中将默认参数设置为POST

时间:2015-07-21 16:00:55

标签: angularjs angular-resource angularjs-factory

我有一个简单的AJAX请求,每次调用都需要一个csrf令牌,我这样定义:

app.factory('auth', ['$resource', '$cookies', function($resource, $cookies){

    var getCsrf = function() {
        //get csrf token from cookie
    };

    return {
        login: $resource('auth/login', {}, {
                'q' : {
                    method: 'POST',
                    params: {csrf_token: getCsrf()}
                }
            }),
        // ... some more requests
    };
}]);

据我所知,你可以指定默认的url参数作为$resource() - 调用的第二个参数,在我的例子中是空对象{}。显然,我在params: ...下的配置对象中设置的数据也可以通过GET发送,而不是使用指定的POST方法发送。

一种方法是手动将csrf_token放在我调用api-function的地方,但是我想保持它干净。有没有办法告诉angular用什么方法用于默认参数?所以我可以简单地使用..

auth.login.q(email, password, ...).then( ... );

..无需在我的所有调用中实现csrf-getter函数。此外,我对AngularJS相对较新,所以一个简单的答案就会很棒!

1 个答案:

答案 0 :(得分:0)

有一种简单的角度方法: 在配置模块中设置xsrf cookie名称和头名称默认值。

DESC TABLE users;