【发布时间】:2016-12-13 15:30:21
【问题描述】:
我正在尝试从 Angular 2 前端与有点 RESTful 的 API 对话。
要从集合中删除某些项目,除了删除的唯一 ID(可以附加到 url)之外,我还需要发送一些其他数据,即身份验证令牌、一些集合信息和一些辅助数据。
我发现最直接的方法是将身份验证令牌放在请求标头中,并将其他数据放在正文中。
但是,Angular 2 的 Http 模块并不完全同意带有正文的 DELETE 请求,并试图发出此请求
let headers= new Headers();
headers.append('access-token', token);
let body= JSON.stringify({
target: targetId,
subset: "fruits",
reason: "rotten"
});
let options= new RequestOptions({headers:headers});
this.http.delete('http://testAPI:3000/stuff', body,options).subscribe((ok)=>{console.log(ok)}); <------line 67
给出这个错误
app/services/test.service.ts(67,4): error TS2346: Supplied parameters do not match any signature of call target.
现在,我在语法方面做错了吗?我很确定每个 RFC 都支持 DELETE 正文
有没有更好的方法来发送这些数据?
或者我应该把它转储到标题中然后收工吗?
对这个难题的任何见解将不胜感激
【问题讨论】:
-
使用 POST 并将删除的措辞重命名为 findAndDelete 才有意义。
-
@YOU 是的,我可以,但我不应该尝试在请求类型级别将破坏性操作与非破坏性操作区分开来吗?
-
那么您必须将其放入查询字符串中,但通常您将要删除的内容的 id 放入 url 中,并将身份验证承载放入 ajax 标头中以发送删除请求。
-
经过几个小时搜索解决方案并收到很多错误后,我终于使用 POST 方法,现在一切正常。
标签: angular rest http-delete