6: Get Data from a Server
authorKai Moritz <kai@juplo.de>
Sat, 16 May 2020 07:30:55 +0000 (09:30 +0200)
committerKai Moritz <kai@juplo.de>
Sat, 16 May 2020 11:41:31 +0000 (13:41 +0200)
c) Heroes and HTTP - Get Heroes with HttpClient

src/app/hero.service.ts

index 649b856..d44f22f 100644 (file)
@@ -2,6 +2,7 @@ import { Injectable } from '@angular/core';
 import { Observable, of, EMPTY } from 'rxjs';
 import { Hero } from './hero';
 import { HEROES } from './mock-heroes';
+import { HttpClient } from '@angular/common/http';
 import { MessageService } from './message.service';
 
 
@@ -10,15 +11,19 @@ import { MessageService } from './message.service';
 })
 export class HeroService {
 
-  constructor(private messageService : MessageService) { }
+  private heroesUrl = 'api/heroes';  // URL to web api
 
-  getHeroes() : Observable<Hero[]> {
-    this.messageService.add('HeroService: fetching heroes...');
-    return of(HEROES);
+  constructor(
+    private http: HttpClient,
+    private messageService: MessageService) { }
+
+  getHeroes(): Observable<Hero[]> {
+    this.log('fetching heroes...');
+    return this.http.get<Hero[]>(this.heroesUrl);
   }
 
   getHero(id: number): Observable<Hero> {
-    this.messageService.add(`HeroService: requested hero id=${id}`);
+    this.log(`requested hero id=${id}`);
     const found: Hero | undefined = HEROES.find(hero => hero.id === id);
     if (found === undefined) {
       return EMPTY;
@@ -26,4 +31,9 @@ export class HeroService {
       return of(found);
     }
   }
+
+  /** Log a HeroService message with the MessageService */
+  private log(message: string) {
+    this.messageService.add(`HeroService: ${message}`);
+  }
 }