【问题标题】:AngularJS DELETE request to my REST webservice is in plain text?对我的 REST Web 服务的 AngularJS DELETE 请求是纯文本的吗?
【发布时间】:2014-09-22 11:58:08
【问题描述】:

所以我正在尝试使用 REST 服务将 AngularJS 前端连接到 Java Spring 后端。

我的 DELETE 请求不断收到以下错误(注意扬声器?id=) - 为什么它生成扬声器?id= 而不是扬声器/?

DELETE http://localhost:8082/rest/speaker?id=54200b6b772f1e7b0688307b 405 (Method Not Allowed) 

代码如下:

Java:

@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);

干杯,

【问题讨论】:

    标签: java javascript angularjs spring rest


    【解决方案1】:

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

    【讨论】:

    • 嗨,必须这样做(更改为 speakerId),我还必须删除删除名称周围的引号 ''。
    猜你喜欢
    • 2016-03-22
    • 1970-01-01
    • 2017-07-19
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 2019-10-09
    相关资源
    最近更新 更多