【问题标题】:How to pass body payload to angular $resource DELETE call如何将正文有效负载传递给角度 $resource DELETE 调用
【发布时间】:2014-06-29 20:47:12
【问题描述】:

我有这样配置的标准角度 $resource

angular.module('client.resources')

.factory('ProjectSubjectResource',['$resource',
    function ($resource) {
            release: {
                method: 'DELETE',
                isArray: false
            }
        });
    }]);

我称这个方法为

ProjectSubjectResource.release({projectId: projectId, subjectId: 0},{ subjectIds: subjectIdArray})

其中 subjectIdArray 是对象数组:

[{subject1: 213123}, {subject2: 3131}]

但是,请求正文不包含该数组。我怀疑删除请求是问题,因为将方法调用重命名为例如PUT 有所作为。

我能以某种方式允许 DELETE 请求的正文吗?

【问题讨论】:

  • 在 github 上查看 $resource 它有 var hasBody = /^(POST|PUT|PATCH)$/i.test(action.method); 看起来 Angular 不包含 DELETE 请求中的主体......至于解决它,我不知道:(

标签: angularjs rest angularjs-resource


【解决方案1】:

看看this answer

DELETE 的请求正文被忽略。您必须使用 POST 来做您想做的事情,或者使用 URL 描述您发送的数据。

更新DELETE 请求可以有一个主体,因为 Angular 1.6.4;查看denisazevedo's 回答以获取更多信息。

【讨论】:

    【解决方案2】:

    Angular 1.6.4 开始,添加了hasBody 操作配置。

    您现在可以拥有:

    deleteSomething: {
        method: 'DELETE',
        hasBody: true
    }
    

    hasBody - {boolean} - 允许指定请求正文是否应该是 包括与否。如果未指定,则仅 POST、PUT 和 PATCH 请求 会有一个身体。

    Reference

    【讨论】:

      猜你喜欢
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 2022-07-08
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      相关资源
      最近更新 更多