带body的Angular $ http.delete请求

tpi*_*pie 5 ajax rest angularjs sails.js

所以我查看了这篇文章: 是一个允许http删除请求的实体

这似乎表明,虽然在某些概念层面上做"好",但在实践中它可能不可行,因为浏览器只是忽略它.

我有一些express.js身份验证中间件我需要通过,我不想将我的用户详细信息附加到url params.我需要进行身份验证的所有其他请求都会将这些详细信息附加到请求正文中.

有没有办法强迫这个?我看到其他一些帖子,其中有些人似乎成功通过删除请求传递了一个正文.

我正在运行一个节点/ sails后端.它始终将正文记录为未定义的删除请求.有没有办法修改

tpi*_*pie 3

sails API从参数中 提取要删除的对象的 id,因此我们必须将 id 附加到 url 中。

但是,如果我想在处理删除请求之前在正文中传递一些身份验证详细信息以进行服务器端验证,我不能将它们作为删除请求的第二个参数粘贴在对象中,就像使用 $http.post 一样。

Angular 的 post 方法会自动将我们作为第二个参数插入的内容分配给请求的正文,但 delete 方法不会

Angular 的 $http.delete 方法允许我们提供一个配置对象作为第二个参数,通过它我们可以访问“data”属性。这与 post 通过第二个参数执行的方式相同。

因此,如果我们需要将正文附加到删除请求,我们可以使用以下内容:

$http.delete('/api/' + objectToDelete.id, {data: {id: currentUser().id, level: currentUser().level}});
Run Code Online (Sandbox Code Playgroud)

这将在 url 参数中传递要删除的 id 对象,并将我的用户凭据作为对象传递到正文中。

  • 如果您添加以下内容,则此方法有效: $httpProvider.defaults.headers.delete = { "Content-Type": "application/json;charset=utf-8" }; (3认同)