url - Angular $save 方法触发带有错误 url 的 post 请求

标签 url angularjs resources save

这是我的服务

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/

相关文章:

angularjs - 使用 Angular js 在表中动态添加角色编号

java - java中的无痛资源管理

wpf - 为什么我不能在 WPF 应用程序中设置图像源?

javascript - 将传递的函数参数附加到 Controller 内的 $scope

php - 将 URL 中的 ID 替换为用户名

javascript - 使 URL W3C 有效并在 Ajax 请求中工作

url - 动态向查询请求添加无值的查询参数

javascript - JsPDF 在每个新页面上重复第一行

android - 将任意文件夹指定为 Android Assets ?

ios - SwiftUI : API URL fetch failed