将HTTP处理逻辑封装在其自己的类中可能是一个好主意。以下类公开了一种获取Posts的方法。它调用该方法并调用返回的将对象转换为对象。http.get().mapObservableResponsePost
import {Injectable} from "@angular/core"; import {Http, Response} from "@angular/http"; @Injectable() export class BlogApi { constructor(private http: Http) { } getPost(id: number): Observable<Post> { return this.http.get(`https://jsonplaceholder.typicode.com/posts/${id}`) .map((response: Response) => { const srcData = response.json(); return new Post(srcData) }); } }
前面的示例使用一个Post类来保存返回的数据,该类如下所示:
export class Post { userId: number; id: number; title: string; body: string; constructor(src: any) { this.userId= src && src.userId; this.id= src && src.id; this.title= src && src.title; this.body= src && src.body; } }
现在,组件可以使用BlogApi该类轻松检索Post数据,而无需考虑Http该类的工作原理。