Я работаю в угловых js при удалении службы api при передаче данных в сервисе, он показывает ошибку 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
Согласно документации по сервису $http
, метод delete принимает только 2 параметра, url и config, что означает, что ваши данные в настоящее время обрабатываются как config. Вы, скорее всего, хотите передать некоторые параметры параметров в свой конфигурационный объект.
DataService.deleteUser(id).then(function successCallback(response) {
console.log('deleted');
}, function errorCallback(response) {
console.log(response);
});
И ваша служебная декларация должна быть более похожей.
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.
Второй параметр в $ http.delete - это конфигурация, поэтому вам нужно передать объект конфигурации в качестве второго параметра, а не данных.
Метод DELETE не принимает тело запроса, поэтому вам не следует передавать идентификатор в виде данных. Вместо этого попробуйте этот http://main_url/users? Id = id
Поэтому в вашем сервисе используйте это
return $http.delete(mainURL + '/users?Id='+data, config);
Также проверьте, как вы передаете ID в свой API. Если вы передаете идентификатор в качестве параметра запроса, то выше будет работать, но если вы передаете его как параметр маршрута, то указанный выше URL-адрес не будет работать, но из вашего выражения CURL я считаю, что вы передаете Id в строке запроса и а не как параметр маршрута.