这是我的服务
album.factory('albumService', function($resource) {
return $resource('/album/v1/album/:id', {id:'@id'})
});
但是当我尝试创建相册时
var newAlbum = new albumService($scope.album)
newAlbum.$save()
Angular 向“/album/v1/album”触发一个发布请求,这是错误的,它删除了我的尾随斜杠,它应该是“/album/v1/album/”。
因为我使用的是 tastypie,如果没有尾部斜杠,则会出现错误
You called this URL via POST, but the URL doesn't end in a slash
我的尾部斜杠在哪里?
最佳答案
我使用了 git 问题线程中提到的解决方法,它也适用于 Firefox。
angular.module('ngResource').config([
'$provide', '$httpProvider',
function($provide, $httpProvider) {
$provide.decorator('$resource', function($delegate) {
return function() {
if (arguments.length > 0) { // URL
arguments[0] = arguments[0].replace(/\/$/, '\\/');
}
if (arguments.length > 2) { // Actions
angular.forEach(arguments[2], function(action) {
if (action && action.url) {
action.url = action.url.replace(/\/$/, '\\/');
}
});
}
return $delegate.apply($delegate, arguments);
};
});
$provide.factory('resourceEnforceSlashInterceptor', function() {
return {
request: function(config) {
config.url = config.url.replace(/[\/\\]+$/, '/');
return config;
}
};
});
$httpProvider.interceptors.push('resourceEnforceSlashInterceptor');
}
]);
关于url - Angular $save 方法触发带有错误 url 的 post 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17312683/