【发布时间】:2017-11-22 08:52:48
【问题描述】:
这是来自 app/toh/hero.service.ts 的 angular 2 http 指南:
...
@Injectable()
export class HeroService {
private heroesUrl = 'app/heroes'; // URL to web API
constructor (private http: Http) {}
getHeroes (): Observable<Hero[]> {
return this.http.get(this.heroesUrl)
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body.data || { };
}
private handleError (error: Response | any) {
...
}
}
请参考 let body = res.json(); 从 API 我在 Response 对象上找不到任何 json() 方法。 从响应源我确实找到了这个:
export var Body = (function () {
function Body() {
}
/**
* Attempts to return body as parsed `JSON` object, or raises an exception.
*/
Body.prototype.json = function () {
if (isString(this._body)) {
return Json.parse(this._body);
}
if (this._body instanceof ArrayBuffer) {
return Json.parse(this.text());
}
return this._body;
};
这两个有什么关系?
【问题讨论】:
-
什么不清楚?
.json方法尝试为您将响应正文解析为 JS 对象。 here 提到 “Angular HTTP 客户端遵循 Fetch 规范”。 -
返回Response的解析数据...
-
@johnsharpe,可能我的问题措辞不正确。我想知道在“响应”源代码中哪里可以找到 json() 方法。我在“正文”源代码中找到了该方法。我正在回答我自己的问题,请仔细阅读,如果您发现我的任何误解,请指出。
标签: javascript angular