如何用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数据,如标题等