对我的REST Web服务的AngularJS DELETE请求是纯文本的吗?

时间:2014-09-22 11:58:09

标签: java javascript angularjs spring rest

所以我试图使用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);

干杯,

1 个答案:

答案 0 :(得分:1)

我认为您应该删除删除操作上的params对象或将参数重命名为speakerId,否则AngularJS无法在资源中设置url参数(您的url占位符是speakerId,但您的属性名为id)