Angular2如何模拟后端开发
Angular2 how to mock backend for development
我正在用 angular2 编写一个应用程序,我想模拟后端,目前还没有准备好。
这是我的服务:
import { Injectable } from '@angular/core';
import { Http, Headers, Response, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { Item } from './item';
@Injectable()
export class ItemService {
private itemUrl = 'api/item'; // URL to web api
constructor(private http: Http) { }
getItems(): Observable<Item[]> {
return this.http
.get(this.itemUrl)
.map(this.extractData)
.catch(this.handleError);
}
addItem(name: string): Observable<Item> {
let body = JSON.stringify({ name });
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this.itemUrl, body, options)
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body.data || {};
}
private handleError(error: any) {
let errMsg = 'error';
return Observable.throw(errMsg);
}
}
而且我想拦截在我的 TypeScript 代码中向 "itemUrl" 发出的每个请求,并对常用列表进行简单操作。
您可能应该使用 angular-in-memory-web-api
。参见 for an example. Also check out the documentation。在较长的 运行 中,使用它可能比尝试使用 Angular 的 MockBackend
节省更多时间。您可以使用 in-memory-web-api 进行单元测试 和 开发。
我正在用 angular2 编写一个应用程序,我想模拟后端,目前还没有准备好。
这是我的服务:
import { Injectable } from '@angular/core';
import { Http, Headers, Response, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { Item } from './item';
@Injectable()
export class ItemService {
private itemUrl = 'api/item'; // URL to web api
constructor(private http: Http) { }
getItems(): Observable<Item[]> {
return this.http
.get(this.itemUrl)
.map(this.extractData)
.catch(this.handleError);
}
addItem(name: string): Observable<Item> {
let body = JSON.stringify({ name });
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this.itemUrl, body, options)
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body.data || {};
}
private handleError(error: any) {
let errMsg = 'error';
return Observable.throw(errMsg);
}
}
而且我想拦截在我的 TypeScript 代码中向 "itemUrl" 发出的每个请求,并对常用列表进行简单操作。
您可能应该使用 angular-in-memory-web-api
。参见 MockBackend
节省更多时间。您可以使用 in-memory-web-api 进行单元测试 和 开发。