gpt4 book ai didi

angularjs - 覆盖 Angular $http 帖子以使用附加数据扩展每个帖子数据

转载 作者:行者123 更新时间:2023-12-05 00:22:52 25 4
gpt4 key购买 nike

在 Yii 框架中,我们必须在 POST 数据中添加一个 CSRF token ,以便可以验证请求。

token 由 PHP 生成,我正在传递这样的变量

angular.module('MyConstant', []).constant("MyConstant", 
{'postdata': {'_csrf': 'ABCDEF'}}); //this is written by PHP

var app = angular.module('MyApp', ['MyConstant']);

app.controller('MyCtrl', [
'$scope', '$http', 'MyConstant',
function ($scope, $http, MyConstant) {
}]);

每当我想发送 POST 时,我都必须做这样的事情。
  $http.post(url, angular.extend(MyConstant.postdata, {data: mydata}));

POST 正文将是这样的
 {"_csrf": "ABCDEF", "data": "bla bla bla"}

我只是好奇是否有一种“Angular 方式”来覆盖 $http.post自动附加数据以避免代码重复,如 angular.extend(ViewConstants.postdata以上。

更新

感谢@GregL 的指点。我可以使用 interceptors 这样做
app.config(['$httpProvider', 'MyConstant', 
function ($httpProvider, MyConstant) {
$httpProvider.interceptors.push(function () {
return {
request: function (config) {
if (config.method == "POST"){
config.data = angular.extend(MyConstant.postdata, config.data);
}
return config;
}
};
});
}]);

最佳答案

是的,您应该可以注册 interceptor .

只需为 request 添加一个拦截器方法,并检查 config.method === 'POST'如果是这样,请将常量添加到发送的数据中( config.data )。

关于angularjs - 覆盖 Angular $http 帖子以使用附加数据扩展每个帖子数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29224695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com