angular - 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 请求会使用类型断言,但不太明白它是如何工作的。
解决方案
是的!没错, aPOST
将返回成功代码。我不知道它在文档中以这种方式提到的实际原因是什么,但我会写下我所理解的。(很难在评论中写:)
POST 请求的响应将取决于您如何实现API
. 例如,您的数据库为任何 POST 请求设置了一些默认值,例如createDate
,Hero
您希望在 Angular 应用程序中使用 createDate。你会怎么做?您将从API
.
就文档中的实现而言,他们正在使用mock-api
. 如果您记录响应,您将看到状态为204
。默认情况下,在此状态下,不发送正文。但是,如果您将模拟服务配置为:
HttpClientInMemoryWebApiModule.forRoot(InMemHeroService, {put204: false, post204: false})
你会得到200
身体的回应,这将是Hero
身体。
推荐阅读
- python - 如何使用 python selenium 为所有选项卡运行 execute_cdp_cmd
- python - 如何在 Google Colab 中设置环境变量?
- php - 如何使用 XAMPP 的 apache 运行 php?
- azure - 管道不替换数组对象
- swift - Swift5 中的 T.self 是什么?
- java - 封闭类型 GUI 的实例停止 EDT
- kubernetes - 将附加持久卷应用到 YAML 文件时 Pod 崩溃
- css - 将 GitHub Pages Jekyll 主题自定义为非背景颜色或框内联代码
- python-3.x - AttributeError:模块“枚举”在使用 pip3 命令时没有属性“IntFlag”
- redis - 为什么 Redis 提供范围分区?