使用in-memory-web-api时,Angular 2 HTTP GET响应不同

时间:2017-02-23 08:57:32

标签: http angular

我正在使用实例 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 中定义的英雄。

enter image description here

现在我要禁用 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字符串,包含快递服务器发送的数据。

enter image description here

我的问题。这种不同反应的原因是什么?

0 个答案:

没有答案