我遵循Angular2 tutorial但是Http.delete总是抛出异常:
TypeError:this._body为null
原始代码为hero.service.ts
public deleteHero(hero: Hero) {
const headers = new Headers({
'Content-Type': 'application/json'
});
return this._http
.delete(this._heroesUrl + "/" + hero.Id, { headers: headers })
.toPromise()
.catch(this.handleError);
}
答案 0 :(得分:4)
实际上,虽然接受的答案是有效的解决方法,但正确的解决方案是删除Content-Type
标题。 DELETE
个请求不应该有body
(空或其他),因此它们也不应该有Content-Type
标头。 GET
请求也是如此。由于有Content-Type
标头而没有body
(这是一种不合逻辑的组合),会引发错误。
答案 1 :(得分:2)
原来我丢失的一件小事是:
.delete(this._heroesUrl + "/" + hero.Id, { headers: headers, body: "" })
在标题:标题之后您还可以设置正文。现在,由于它的删除请求通常没有正文。但如果body为null,则会抛出异常......
的修改
这是一种解决方法,但实际答案来自@simon