我有一個AngularJS Web應用程序和Jersey後端應用程序。AngularJS和Jersey REST DELETE操作失敗,代碼爲415狀態代碼
現在一切正常,使用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訪問REST服務了AngularJS的方式。
現在我的服務看起來如下:
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, {});
}
};
}]);
結果仍然相同。應用程序調用e.g
DELETE http://localhost:8080/manager-api/courses/1
並接收
DELETE http://localhost:8080/manager-api/courses/1 415 (Unsupported Media Type)
如果我呼籲捲曲同一DELETE召喚,一切工作正常。
感謝您的幫助 馬克
另一種選擇是改變JAX-RS新澤西方允許消費MediaType.APPLICATION_XML ... @Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})。 –
好點,加入回答 – paullth
把「.config(函數($ httpProvider)...」放在哪裏? –