【问题标题】:Angular2 Http.Delete Body is nullAngular2 Http.Delete 正文为空
【发布时间】:2016-08-16 09:07:39
【问题描述】:

我遵循 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);
}

【问题讨论】:

    标签: angular rxjs angular2-http


    【解决方案1】:

    实际上,虽然接受的答案是一种有效的解决方法,但正确的解决方案是删除 Content-Type 标头。 DELETE 请求不应该有 body (为空或其他),因此它们也不应该有 Content-Type 标头。 GET 请求也是如此。由于有 Content-Type 标头而没有 body(这是一个不合逻辑的组合),所以会引发错误。

    【讨论】:

    • 好吧,我想我从来没有质疑过为什么会有内容类型。像没有任何标题的魅力一样工作。谢谢:D
    【解决方案2】:

    原来我缺少的一件小事是:

    .delete(this._heroesUrl + "/" + hero.Id, { headers: headers, body: "" })
    

    headers 之后:headers 你也可以设置一个body。现在,由于它是一个删除请求,因此通常没有正文。但是如果 body 是 null angular 会抛出异常......

    编辑
    这是一种解决方法,但实际答案来自@simon

    【讨论】:

    • 谢谢!在查看@angular/http/bundles/http.umd.js 并对其进行操作以进行空值检查之后,您的解决方案似乎更好!
    • 其实,正确的解决办法是去掉Content-Type这个标头——看下面我的回答。
    猜你喜欢
    • 2016-12-13
    • 2017-01-24
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    相关资源
    最近更新 更多