angularjs - Angular.js 删除带参数的资源

标签 angularjs

我的其余 API 接受对以下网址的 DELETE 请求

/api/users/{slug}

因此,通过将删除发送给指定的用户(slug),该用户将被删除。这是服务代码:
angular.module('UserService',['ngResource']).factory('User', function($resource){
    var User = $resource('/api/users/:id1/:action/:id2', //add param to the url
    {}, 
    { 
        delete_user: {
            method: 'DELETE',
            params: {
                id1:"@id"
            }
        },
        update: {
            method: 'PUT',
            params: {
                id1:"@id"
            }
        }
    }); 

    return User;
}); 

我通过调用删除函数
user.$delete_user({id:user.id}, function(){}, function(response){}); 

但是,请求似乎发送到错误的 url。
/api/users?id=4

所以参数实际上丢失了,结果我得到了一个 405 Method not allowed 。有没有机会以我的api风格发送删除请求?

最佳答案

params是您操作中默认请求参数的对象。如果你想要 url 参数,你必须在第二个参数中指定它们,如下所示:

angular.module('UserService',['ngResource']).factory('User', function($resource){
    var User = $resource('/api/users/:id1/:action/:id2', //add param to the url
    {id1:'@id'},
    { 
        delete_user: {
            method: 'DELETE'
        }
    }); 

    return User;
}); 

这适用于:

// user has id
user.$delete_user(function(){
  //success
},function(){
  // error
});

或者

var data = {id:'id_from_data'};
User.delete_user({},data);

或者

var params = {id1:'id1_from_params'};
User.delete_user(params);

我做了一个 plnkr-example - 您必须打开控制台以验证 DELETE 请求是否正确。

参见 Angular resource documentation 中的参数默认值.

关于angularjs - Angular.js 删除带参数的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16167463/

相关文章:

javascript - Angular View 未更新

javascript - 如何清除 angular.js 中的 cookie

javascript - 具有动态 HTML 模板的 AngularJS 递归指令

javascript - $resource 在 AngularJS 中响应一个空数组

javascript - 如何在 jquery 中附加到 html 之前编译字符串(包含 Angular 目录)?

javascript - 是否可以从 angularjs 中的 Controller 调用特定函数?

javascript - 在 AngularJS 中添加第二个过滤器而不破坏第一个过滤器

angularjs - Angular md-nav-bar 反射(reflect)当前路线

node.js - Node JS 新手 : why do I get a 404?( Angular 种子)

javascript - 从 Angular 变量填充 jstree ThreeView