【问题标题】:What is a clean way to send a body with DELETE request?发送带有 DELETE 请求的正文的干净方法是什么?
【发布时间】:2013-02-16 00:59:54
【问题描述】:

我需要使用 $resource 发送带有我的 DELETE 请求的请求正文

我能看到的唯一方法就是改变:

https://github.com/angular/angular.js/blob/master/src/ngResource/resource.js

来自

var hasBody = action.method == 'POST' || action.method == 'PUT' || action.method == 'PATCH';

收件人

var hasBody = action.method == 'POST' || action.method == 'PUT' || action.method == 'PATCH' || action.method == 'DELETE';

有没有更好的方法来覆盖它?就像您更改内容类型标题一样,您可以这样做:

$httpProvider.defaults.headers["delete"] = {'Content-Type': 'application/json;charset=utf-8'};

或类似的东西......我用谷歌搜索了这个,但也许我错过了一些明显的东西(不是第一次)。感谢您提前提供任何帮助。

【问题讨论】:

  • 我想指出。 DELETE 应该删除由 url 标识的资源。所以你不应该在正文中发送数据。
  • 我在 DELETE 上允许某些正文
  • +1,我正要发布同样的问题。 @SubirKumarSao,我想用我的 DELETE 发送请求正文以删除多个资源(要删除的资源是请求正文中的内容)。有没有更 RESTful 的方式来做到这一点?
  • 我认为上面的评论是指 DELETE /post 是不稳定的,因为它应该在 URL 中指定一个特定的资源。但是,我想删除 /post/:id 但我需要确保将标识符令牌作为数据发送的用户拥有该帖子。

标签: javascript angularjs angular-resource


【解决方案1】:

这行得通。

$scope.delete = function(object) {
    $http({
        url: 'domain/resource',
        method: 'DELETE',
        data: {
            id: object.id
        },
        headers: {
            "Content-Type": "application/json;charset=utf-8"
        }
    }).then(function(res) {
        console.log(res.data);
    }, function(error) {
        console.log(error);
    });
};

【讨论】:

  • 不。这没有。同$http.delete('domain/resource', {id: object.id});
  • 好的,我编辑了你的答案,你应该添加正确的标题。现在它可以工作了:)
【解决方案2】:

您应该能够按照文档https://docs.angularjs.org/api/ngResource/service/$resource 中的说明对您的资源调用“删除”

【讨论】:

    【解决方案3】:

    您可以将$http (http://docs.angularjs.org/api/ng.%24http#Usage) 组件注入到您的其中一个控制器中,并按如下方式使用它:

    $http({method: 'DELETE', url: 'www.url.com', headers: {'X-MY-HEADER': 'MY_VALUE'}});
    

    我希望这是你所期望的。

    【讨论】:

    • 我试图用 Angular Resource docs.angularjs.org/api/ngResource.$resource 来做这件事,在问题中没有说清楚,对不起
    • 好的。我认为 $resource 不是为这种处理而设计的,它显然是为了在数据绑定上下文中使用。对于特定的特定请求,我猜必须直接使用 $http。
    • 根据我的阅读,如果这是自定义标头,则添加“X-”前缀被认为是不好的做法。我仍然宁愿发送带有删除的内容而不是自定义标题。
    • 你能想出一种方法来使用 $resource 服务在正文中传递一个删除方法吗?
    猜你喜欢
    • 2018-04-27
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多