如何使用angularjs $ http.delete()请求发送数据?

Mar*_*ark 59 javascript angularjs laravel-4

我有一个资源'角色',与'用户'有很多关系.要管理"角色",我需要将角色ID和用户ID发送到服务器,以便从正确的用户(不一定是登录用户)中删除角色

这是我的尝试,但根据文档,这是不可能的.我知道我可以在uri中发送两个id但是我的laravel后端会自动设置资源/ {resourceid}的资源路径,如果可能的话我想使用它.有没有办法做到这一点,我失踪了?

var removeRole = function (roleid, userid) {
        var input =[];
        input.user = userid;

        $http.delete('/roles/' + roleid, input).success(function (data, status) {
            console.log(data);
        });
    };
Run Code Online (Sandbox Code Playgroud)

smb*_*n79 102

您可以通过/ users/1/roles/2之类的URL执行http DELETE.这将是最RESTful的方式.

否则我猜你可以将用户ID作为查询参数的一部分传递?就像是

$http.delete('/roles/' + roleid, {params: {userId: userID}}).then...
Run Code Online (Sandbox Code Playgroud)

  • 很好的提示,我尝试不使用键 `params` 作为 get 而是删除请求只能使用 `params` 键,非常感谢! (3认同)
  • 我声明了一条路线 /roles/1/users/1 世界上一切都很好,谢谢 (2认同)

eld*_*des 33

我的建议:

$http({
    method: 'DELETE',
    url: '/roles/' + roleid,
    data: {
        user: userId
    },
    headers: {
        'Content-type': 'application/json;charset=utf-8'
    }
})
.then(function(response) {
    console.log(response.data);
}, function(rejection) {
    console.log(rejection.data);
});
Run Code Online (Sandbox Code Playgroud)


小智 5

$http.delete方法不接受请求正文.您可以尝试以下解决方法:

$http( angular.merge({}, config || {}, {
    method  : 'delete',
    url     : _url,
    data    : _data
}));
Run Code Online (Sandbox Code Playgroud)

在哪里config可以传递配置数据,如标题等.