我正在使用实例( Angular 2 Tutorial HTTP (angular.io/docs/ts/latest/tutorial/toh-pt6.html) angular.io/resources/live-examples/toh-6/ts/eplnkr.html)作为我调查的基础。
此示例使用 Angular in-memory-web-api (github.com/angular/in-memory-web-api)来模拟Web服务器。
在文件 hero.service.ts 中,使用以下函数从服务器加载数据数组:
getHero(id: number): Promise<Hero> {
const url = `${this.heroesUrl}/${id}`;
return this.http.get(url)
.toPromise()
.then(response => response.json().data as Hero)
.catch(this.handleError);
}
详细分析响应对象显示,它有一个成员 _body ,它是一个Object。该对象有一个 data 成员,它是一个数组,包含在文件 in-memory-data.service.ts 中定义的英雄。
现在我要禁用 Angular in-memory-web-api 并更改为真正的快速服务器。我在文件 app.module.ts 中注释掉了 InMemoryWebApiModule ,并在快速服务器中添加了一些(快速和脏的)其他中间件。
const heroes = [
{id: 1, name: 'Mr. One'},
{id: 2, name: 'Mr. Two'},
{id: 3, name: 'Mr. Three'}
];
function sendDatabaseResponse (req, res, next) {
if (req.method === 'GET' && req.url === '/api/heroes') {
let response = { };
response.data = heroes;
res.json(response);
}
else
next();
}
一切都按预期工作,但分析 hero.service.ts 中的 Response 对象会显示不同的结果。
现在成员体不是对象,它是一个JSON字符串,包含快递服务器发送的数据。
我的问题。这种不同反应的原因是什么?