我有一个资源'角色',与'用户'有很多关系。要管理“角色”,我需要将角色ID和用户ID发送到服务器,以便从正确的用户(不一定是登录用户)中删除角色
这是我的尝试,但根据docs,这是不可能的。我知道我可以在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);
});
};
答案 0 :(得分:99)
您可以通过/ users / 1 / roles / 2等网址进行http DELETE。这将是最RESTful的方式。
否则我猜你可以将用户ID作为查询参数的一部分传递?像
这样的东西$http.delete('/roles/' + roleid, {params: {userId: userID}}).then...
答案 1 :(得分:30)
我的建议:
$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);
});
答案 2 :(得分:5)
$http.delete
方法不接受请求正文。
您可以尝试以下解决方法:
$http( angular.merge({}, config || {}, {
method : 'delete',
url : _url,
data : _data
}));
在config
中,您可以传递配置数据,如标题等。
答案 3 :(得分:3)
我建议阅读这个网址 http://docs.angularjs.org/api/ngResource/service/$resource
并重新评估您调用资源的删除方法的方式。
理想情况下,您希望调用资源项本身的删除,并且不将资源的id传递给catch all delete方法
但$ http.delete接受一个包含url和data属性的配置对象,你可以在那里制作查询字符串或将对象/字符串传递给数据
也许是这些方面的东西
$http.delete('/roles/'+roleid, {data: input});
答案 4 :(得分:2)
多对多的关系通常都有一个链接表。将此“链接”视为一个实体,并为其提供唯一ID,然后在删除请求中发送该ID。
您将拥有一个像/ user / role这样的REST资源URL来处理用户角色“链接”实体的操作。
答案 5 :(得分:0)
请尝试在httpoptions
中传递参数,您可以按照下面的功能
deleteAction(url, data) {
const authToken = sessionStorage.getItem('authtoken');
const options = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
Authorization: 'Bearer ' + authToken,
}),
body: data,
};
return this.client.delete(url, options);
}