我在删除服务api的角度js工作时,在服务中传递数据时显示400错误请求错误。这是我调用服务的js。
$scope.deleteUser = function(id){
var data = 'Id='+id;
DataService.deleteUser(data).then(function successCallback(response) {
console.log('deleted');
}, function errorCallback(response) {
console.log(response);
});
}
这是删除用户的服务js。
service.deleteUser = function(data){
var config = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Auth-Token': 'mytoken'
}
};
return $http.delete(mainURL + '/users', data, config);
};
这是我需要传递数据的curl api请求:
curl -v -H "X-Auth-Token: mytoken" -X DELETE -F Id=665799088 http://<ipaddress>/users
答案 0 :(得分:0)
$ http.delete的第二个参数是配置,因此您需要将配置对象作为第二个参数而不是数据传递。
DELETE方法类型不接受Request主体,因此您不应将ID作为数据传递。而是试试这个http://main_url/users?Id=id
所以在你的服务中使用这个
return $http.delete(mainURL + '/users?Id='+data, config);
同时检查您如何将ID传递给API。如果您将ID作为查询参数传递,那么以上内容将起作用,但如果您将其作为路由参数传递,则上述URL将不起作用,但是从您的CURL表达式我相信您在Query字符串中传递Id并且不作为路线参数。
答案 1 :(得分:0)
根据$http
DataService.deleteUser(id).then(function successCallback(response) {
console.log('deleted');
}, function errorCallback(response) {
console.log(response);
});
服务,delete方法只接受2个参数,url和config,这意味着您的数据当前被视为配置。您很可能希望将一些params选项传递给配置对象。
service.deleteUser = function(id){
var config = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Auth-Token': 'mytoken'
},
params : {
id : id
}
};
return $http.delete(mainURL + '/users', config);
};
您的服务声明应该更像。
/users/id
另请注意,如果您负责API,那么看起来像% cqlsh -u cassandra -p cassandra
% // create demo keyspace
% // create users table
% //insert a couple of row in the users table
的路径会更正确。