首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular HttpClient post请求类型

Angular HttpClient post请求类型
EN

Stack Overflow用户
提问于 2018-05-01 12:53:42
回答 3查看 715关注 0票数 3

official Angular HttpClient documentation给出了向某个后端服务器发出POST请求的示例。

代码语言:javascript
复制
/** 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请求会使用类型断言,但不太理解它是如何工作的。

EN

回答 3

Stack Overflow用户

发布于 2018-05-01 13:23:43

嗯!这是正确的,POST将返回一个成功代码。我不知道文档中以这种方式提到它的真正原因是什么,但我会写下我理解的内容。(很难在评论中写出来:)

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

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

代码语言:javascript
复制
HttpClientInMemoryWebApiModule.forRoot(InMemHeroService, {put204: false, post204: false})

你将得到主体的200响应,它将是Hero主体。

票数 1
EN

Stack Overflow用户

发布于 2018-05-01 13:17:32

在该示例中,addHero似乎是注入到HeroesComponent中的英雄“服务”的一部分。然后,HeroesComponent订阅该服务方法,并将从服务器返回的英雄推送到英雄数组。

这是订阅addHero observable的HeroesComponent。HeroesComponent通过订阅服务方法返回的observable来启动POST方法。:

代码语言:javascript
复制
this.heroesService.addHero(newHero)
  .subscribe(hero => this.heroes.push(hero));
票数 0
EN

Stack Overflow用户

发布于 2018-05-01 13:17:41

原因是接受POST请求的Web API通常会将创建的对象作为响应返回。

当您需要获取某些属性(ID、createdTime等)时,此后端行为特别有用。仅在后端POST请求创建对象后才可用。

有关信息,请参阅https://stackoverflow.com/a/28951049/1608690 more。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50111485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档