首页 > 解决方案 > Angular HttpClient 发布请求类型

问题描述

Angular HttpClient 官方文档提供了以下示例,用于向某个后端服务器发出 POST 请求。

/** POST: add a new hero to the database */
addHero (hero: Hero): Observable<Hero> {
  return this.http.post<Hero>(this.heroesUrl, hero, httpOptions)
    .pipe(
      catchError(this.handleError('addHero', hero))
    );
}

但是我很困惑为什么 Observable 会在 POST 请求中返回 Hero 数据,或者根本不是成功代码的数据。我理解为什么 GET 请求会使用类型断言,但不太明白它是如何工作的。

标签: angulartypescripthttppost

解决方案


是的!没错, aPOST将返回成功代码。我不知道它在文档中以这种方式提到的实际原因是什么,但我会写下我所理解的。(很难在评论中写:)

POST 请求的响应将取决于您如何实现API. 例如,您的数据库为任何 POST 请求设置了一些默认值,例如createDateHero您希望在 Angular 应用程序中使用 createDate。你会怎么做?您将从API.

就文档中的实现而言,他们正在使用mock-api. 如果您记录响应,您将看到状态为204。默认情况下,在此状态下,不发送正文。但是,如果您将模拟服务配置为:

HttpClientInMemoryWebApiModule.forRoot(InMemHeroService, {put204: false, post204: false})

你会得到200身体的回应,这将是Hero身体。


推荐阅读