Angular2 Http.Delete 正文为空
Angular2 Http.Delete Body is null
我遵循了 Angular2 tutorial 但是 Http.delete 总是抛出异常:
TypeError: this._body is 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);
}
原来我遗漏的一件小事如下:
.delete(this._heroesUrl + "/" + hero.Id, { headers: headers, body: "" })
在headers之后:headers你还可以设置一个body。现在因为它是一个删除请求,所以通常没有 body。但是如果 body 为 null angular 将抛出异常...
编辑
这是一种解决方法,但实际答案来自@simon
实际上,虽然接受的答案是有效的 work-around,但正确的解决方案是删除 Content-Type
header。 DELETE
请求不应该有 body
(空或其他),因此它们也不应该有 Content-Type
header。 GET
请求也是如此。该错误是由于 Content-Type
header 而没有 body
(这是不合逻辑的组合)而引发的。
我遵循了 Angular2 tutorial 但是 Http.delete 总是抛出异常:
TypeError: this._body is 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);
}
原来我遗漏的一件小事如下:
.delete(this._heroesUrl + "/" + hero.Id, { headers: headers, body: "" })
在headers之后:headers你还可以设置一个body。现在因为它是一个删除请求,所以通常没有 body。但是如果 body 为 null angular 将抛出异常...
编辑
这是一种解决方法,但实际答案来自@simon
实际上,虽然接受的答案是有效的 work-around,但正确的解决方案是删除 Content-Type
header。 DELETE
请求不应该有 body
(空或其他),因此它们也不应该有 Content-Type
header。 GET
请求也是如此。该错误是由于 Content-Type
header 而没有 body
(这是不合逻辑的组合)而引发的。