我有一个带有 Jersey 后端应用程序的 AngularJS 网络应用程序。
现在一切正常,使用 ngResource 从 AngularJS 访问 REST 资源。唯一的问题是 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);
}
如果我尝试删除一个项目,则从 Angular 调用以下 url:
DELETE http://localhost:8080/manager-api/courses/5
这很好(在我之后)。如果我从 CURL 调用这个 url,我会从发布到控制台的后端获取 ssystem.out。
在客户端应用程序(AngularJS)中,我在浏览器控制台上收到以下异常:
DELETE http://localhost:8080/manager-api/courses/5 415 (Unsupported Media Type)
任何人都知道问题可能是什么?POST + GET 工作正常。
我有以下消费/生产注释:
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
在此先感谢您的帮助。
问候马克
编辑:
我试图用 $http 替换从 AngularJS 访问 REST 服务的方式。
现在我的服务如下所示:
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 上调用相同的 DELETE 调用,一切正常。
谢谢你的帮助马克