Angular $http.delete возвращает ошибку 422 (Непроцессная сущность)

89
9

Я получаю этот внешний вопрос, когда моя веб-страница пытается вызвать метод DELETE-rest. Но, забавная часть - это бэкэнд, отлично работающий, когда я делаю ТАКОЙ ЗВУК, но используя SoapUI.
Здесь мой вызов функции:


$scope.remove = function (id) {
var delUrl = "http://localhost:8080/secure/regulations/" + id;
$http.delete(delUrl);
}

Веб-сервис похож на secure/rules/{id} и не дает ответа (просто сделайте удаление), и, как я уже сказал, вызов SoapUI работает как шарм, но эта функция в браузере не, Здесь ниже заголовков:


General
Remote Address:127.0.0.1:8080
Request URL:http://localhost:8080/secure/regulations/4
Request Method:DELETE
Status Code:422 Unprocessable Entity

Response Headers
Content-Type:application/json;charset=UTF-8
Date:Tue, 23 Jun 2015 14:28:00 GMT
Server:Apache-Coyote/1.1
Transfer-Encoding:chunked

Request Headers
Accept:application/json, text/plain, *\/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie:__ngDebug=true
Host:localhost:8080
Origin:http://localhost:8080
Referer:http://localhost:8080/secure/


Внимательно изучая функцию backend, проблема возникает, когда она получает get (id) против базы данных (до этой точки, id имеет значение), но я не могу поверить, что проблема существует, если SoapUI работает.
Что-то может быть пропущено во внешнем коде: S


ИЗМЕНИТЬ:
В SoapUI запрос raw следующий:


DELETE http://localhost:8080/secure/regulations/5 HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/json
Content-Length: 0
Host: localhost:8080
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

Нет заголовков вообще (на вкладке заголовков), но в представлениях есть пустой Media-Type: application/json (автозарегистрированный).


Любая помощь честно признательна!

спросил(а) 2021-01-19T17:21:26+03:00 6 месяцев назад
1
Решение
64

Попробуйте использовать эту версию debug-verbose с дополнительным заголовком, подобным запросу SoapUI:

$scope.remove = function (id) {
var delUrl = "http://localhost:8080/secure/regulations/" + id;
var _delete = {
'method': 'DELETE',
'url': delUrl,
'headers': {
'Content-Type': 'application/json'
},
'data': ""
}

$http(_delete)
.success(function(){
console.log("OK");
})
.error(function(data, status, headers, config){
console.log(data);
console.log(status);
console.log(headers);
console.log(config);
});
}

ответил(а) 2021-01-19T17:21:26+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема