所以我试图使用REST服务将AngularJS前端连接到Java Spring后端。
我的DELETE请求不断收到以下错误(注意发言人?id =) - 为什么会生成发言人?id =而不是发言人/?
DELETE http://localhost:8082/rest/speaker?id=54200b6b772f1e7b0688307b 405 (Method Not Allowed)
代码如下:
爪哇:
@RequestMapping(method = RequestMethod.DELETE, value = "/{id}")
public void delete(@PathVariable String id) {
speakerService.delete(id);
}
Angular JS服务
this.delete = function (id, callback) {
SpeakerResource.delete({ id: id }, function () {
callback();
});
}
Angular JS工厂
app.factory('SpeakerResource', function ($resource) {
return $resource('rest/speaker/:speakerId',
{
speakerId: '@speakerId'
},
{
'update': { method: 'PUT' }
},
{
'delete': { method: 'DELETE', params: {id: '@speakerId' } }
}
如果我使用$ http语句,那么一切正常,但显然我想坚持使用工厂,因为PUT / POST方法工作正常!
$http.delete('http://localhost:8080/rest/speaker/' + data.id);
干杯,
答案 0 :(得分:1)
我认为您应该删除删除操作上的params对象或将参数重命名为speakerId,否则AngularJS无法在资源中设置url参数(您的url占位符是speakerId,但您的属性名为id)