拦截请求和负载变化
Intercept request and payload change
我有这样的服务:
(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 属性正在屏幕(表单)上被删除。假设用户想要永远停留多次更改同一条记录的数据的情况。
复制配置数据而不是更改原始对象。
function httpInterceptor($q) {
return {
request : function(config) {
config = angular.copy(config);
if(config.method === 'PUT'){
delete config.data.id;
}
return config || $q.when(config);
}
};
}
我有这样的服务:
(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 属性正在屏幕(表单)上被删除。假设用户想要永远停留多次更改同一条记录的数据的情况。
复制配置数据而不是更改原始对象。
function httpInterceptor($q) {
return {
request : function(config) {
config = angular.copy(config);
if(config.method === 'PUT'){
delete config.data.id;
}
return config || $q.when(config);
}
};
}