我想每次从工厂端为CRUD操作发送标题。 这是我的工厂
var appangular.module("LifeStyleFactModule",["ngResource"]);
app.constant("RES_URL", "http://localhost:9090/")
app.factory("CategoryFactory",function($resource,RES_URL){
var categoryinfo;
var categoryresource=$resource(RES_URL+"category/:id",{"id":"@id"},{update:{method:"PUT"}});
return{
getcategory:function(){
categoryinfo=categoryresource.query();
return categoryinfo;
},
addcategoryItem:function(categoryItem){
var category = new categoryresource(categoryItem);
category.$save(function(respdata){
categoryinfo.push(respdata);
},function(respdata){
});
},
deletecategoryItem:function(idx,id){
var category=new categoryresource({"id":id});
category.$delete(function(){
categoryinfo.splice(idx,1);
},function(){
})
},
updatecategoryItem:function(categoryItem,idx){
var category=new categoryresource(categoryItem);
category.$update({"id":categoryItem._id},function(data){
categoryinfo[idx]=data;
},function(){
})
}
}
})
以上功能运作良好。现在我想在标题中发送令牌。我怎样才能做到这一点。
我试图通过以下方式来做到这一点
var categoryresource=$resource(RES_URL+"category/:id",{"id":"@id"},{update:{method:"PUT"},headers:{"token":"@token}});
但没有得到如何发送令牌以进行CRUD操作。
程序是否正确,如果是,我该如何发送令牌。
请告诉我这个方法。
而不是上面的方法,我尝试了以下方式
$resource(RES_URL+"category",{},{query:{method:"get",isArray:true,headers:{"token":token}}}).query({},function(res){});
这是有效的,但是第一个程序的程序。
请在回复后将其标记为重复或投票
不要说(/ {这样的东西不见了。
答案 0 :(得分:0)
对我来说,最好的解决方案是使用拦截器。这是一种在标题中发送令牌的方法,我在我的一个项目中使用过。
angular
.module('app.core')
.config(config);
config.$inject = ['$httpProvider'];
function config($httpProvider) {
$httpProvider.interceptors.push(interceptor);
}
interceptor.$inject = ['$q', '$injector', 'AuthModel'];
function interceptor($q, $injector, AuthModel) {
return {
request: function (config) {
config.headers.Authorization = AuthModel.token;
return config;
},
responseError: function (rejection) {
}
};
}
添加了一个jsfiddle来演示
https://jsfiddle.net/Sergey_Mell/c47js1zc/
只需点击发送按钮,然后查看开发者工具中的请求标题
即可