У меня есть приложение AngularJS с использованием приложения Back Back Back.УгловаяJS и Джерси REST DELETE операция не выполняется с 415 Код состояния
Теперь все работает нормально, используя ngResource для доступа к ресурсу REST из AngularJS. Единственная проблема заключается в опции DELETE.
У меня есть следующий код, чтобы удалить курс с помощью моего ngResource:
Course.deleteCourse = function(course) {
course.$remove({
courseId:course.id
});
return course;
};
В бэкэнде (Джерси) У меня есть следующий код:
@DELETE
@Path("{id}")
public final void remove(@PathParam("id") final String id) {
System.out.println("DELETE ID = " + id);
}
Если я пытаюсь удалить элемент из Углового вызывается следующий url:
DELETE http://localhost:8080/manager-api/courses/5
Это прекрасно (после меня). Если я назову этот url из CURL, я получаю ssystem.out из Backend, отправленного на консоль.
В клиент-приложение (AngularJS) я получаю следующее исключение на консоли браузера:
DELETE http://localhost:8080/manager-api/courses/5 415 (Unsupported Media Type)
Любой идея, что может быть проблема? POST + GET работают нормально.
У меня есть следующие потреблять/производство аннотаций:
@Consumes({ MediaType.APPLICATION_JSON })
@Produces ({MediaType.APPLICATION_JSON})
Заранее спасибо за вашу помощь.
Greets MARC
EDIT:
Я попытался заменить путь доступа к REST услуг из AngularJS с $ HTTP.
Теперь моя служба выглядит, как показано ниже:
MyApp.factory("Course", ["$http", function ($http) {
var courseBaseUrl = "/api/courses/";
return {
show: function show(courseId) {
return $http.get(courseBaseUrl + courseId);
},
list: function list() {
return $http.get(courseBaseUrl, {});
},
remove: function remove(courseId) {
return $http.delete(courseBaseUrl + courseId, {});
},
save: function save(course) {
return $http.post(courseBaseUrl, course, {});
}
};
}]);
Результат все тот же. Приложение вызывает например
DELETE http://localhost:8080/manager-api/courses/1
и получает
DELETE http://localhost:8080/manager-api/courses/1 415 (Unsupported Media Type)
Если я вызываю же УДАЛИТЬ вызов на Curl, все работает отлично.
Спасибо за вашу помощь Марк
Другой вариант заключается в изменении в сторону JAX-RS-Джерси, чтобы потреблять MediaType.APPLICATION_XML ... @Consumes ({MediaType.APPLICATION_JSON,, MediaType.APPLICATION_XML}). –
хорошая точка, добавлено в ответ – paullth
Где поставить «.config (function ($ httpProvider) ...»? –