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

我有一个资源“angular色”,它与“用户”有许多关系。 要pipe理“angular色”,我需要将angular色ID和用户ID发送到服务器,以便从正确的用户(不一定是login的用户)中删除该angular色。

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

var removeRole = function (roleid, userid) { var input =[]; input.user = userid; $http.delete('/roles/' + roleid, input).success(function (data, status) { console.log(data); }); }; 

你可以通过像/ users / 1 / roles / 2这样的URL做一个http DELETE。 这将是最可靠的方法来做到这一点。

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

 $http.delete('/roles/' + roleid, {params: {userId: userID}}).then... 

我的build议:

 $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); }); 

多对多的关系通常有一个链接表。 考虑这个“链接”作为一个实体本身的权利,并给它一个唯一的ID,然后发送该ID在删除请求。

您将拥有一个像/ user / role这样的REST资源URL来处理用户angular色“链接”实体上的操作。

我会build议阅读这个urlhttp://docs.angularjs.org/api/ngResource/service/$resource

并重新评估你如何调用你的资源的删除方法。

理想情况下,你会想要调用资源项本身的删除,并通过不传递资源的ID到catch全部删除方法

然而$ http.delete接受一个包含url和data属性的configuration对象,你可以在那里创build查询string或者将一个对象/string传递给数据

也许沿着这些线路

 $http.delete('/roles/'+roleid, {data: input}); 

$http.delete方法不接受请求体。 你可以尝试这个解决方法:

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

config你可以传递configuration数据,如标题等