Angular Tour of Heroes HttpClient CRUD方法

时间:2018-05-26 16:58:14

标签: angular http crud

我目前正在学习英雄之旅教程。 在HTTP章节中,我不明白如何从服务器调用相应的英雄,因为它看起来只有一个url传递给模拟服务器,对于任何HttpClient.get(或其他CRUD)方法...... / p>

private heroesUrl = 'api/heroes'

和所有英雄(〜数组)的相应get方法:

getHeroes (): Observable<Hero[]> {
  return this.http.get<Hero[]>(this.heroesUrl)
}

如果只返回一个英雄:

/** GET hero by id. Will 404 if id not found */

    getHero(id: number): Observable<Hero> {
      const url = `${this.heroesUrl}/${id}`;
      return this.http.get<Hero>(url).pipe(
        tap(_ => this.log(`fetched hero id=${id}`)),
        catchError(this.handleError<Hero>(`getHero id=${id}`))
      );

这个网址会返回什么内容?我的意思是它只是一个网址,数据库api连接如何在后台响应url(或id传递)?

其他后期方法也是如此:

addHero (hero: Hero): Observable<Hero> {
  return this.http.post<Hero>(this.heroesUrl, hero, httpOptions).pipe(..)
}

它有一个url参数,但如何将实际的英雄传递给服务器?英雄身份在哪里创建?

1 个答案:

答案 0 :(得分:0)

  

这个网址会返回什么内容?

执行HttpClient.get时,结果始终是可观察的。所以你会收到一个可观察的。

  

我的意思是它只是一个网址,怎么样   数据库api连接在后台响应响应   网址(或ID传递)?

正如您在app.module.ts

中看到的那样
 // The HttpClientInMemoryWebApiModule module intercepts HTTP requests
    // and returns simulated server responses.
    // Remove it when a real server is ready to receive requests.
    HttpClientInMemoryWebApiModule.forRoot(
      InMemoryDataService, { dataEncapsulation: false }
    )
  

它有一个url参数,但是如何将实际的英雄传递给   服务器?英雄身份在哪里创建?

您可以在此处找到有关“工作原理”的更多信息:https://github.com/angular/in-memory-web-api