Javascript angular2:RESTAPI的问题
我正在尝试学习angular2(来自php脚本,非常困难^^^),在“英雄之旅”中使用真正的RESTAPI。 从我读到的,我认为它可能很简单 我有一个可用的api,使用Express构建:Javascript angular2:RESTAPI的问题,javascript,rest,angular,Javascript,Rest,Angular,我正在尝试学习angular2(来自php脚本,非常困难^^^),在“英雄之旅”中使用真正的RESTAPI。 从我读到的,我认为它可能很简单 我有一个可用的api,使用Express构建: curl -XGET http://localhost:3001/heroes [{"_id":"58185c8a8af4b512c51c0519","no":"1","name":"bahamut","__v":0,"updated_at":"2016-11-01T09:12:42.803Z"},{"_id
curl -XGET http://localhost:3001/heroes
[{"_id":"58185c8a8af4b512c51c0519","no":"1","name":"bahamut","__v":0,"updated_at":"2016-11-01T09:12:42.803Z"},{"_id":"58185ca78af4b512c51c051a","no":"2","name":"gatz","__v":0,"updated_at":"2016-11-01T09:13:11.063Z"},{"_id":"58185ec98af4b512c51c051b","no":"3","nam...
在hero.service.ts中,我可以获得以下数据:
getHeroes(): Promise<Hero[]> { // {{{
console.log('getheroes in service');
console.log( "%o", this.http.get(this.heroesUrl).toPromise());
return this.http.get(this.heroesUrl)
.toPromise()
.then(response => response.json().data as Hero[])
.catch(this.handleError);
} // }}}
getHeroes():承诺{//{{{
log('getheroes in service');
log(“%o”,this.http.get(this.heroesUrl.toPromise());
返回this.http.get(this.heroesUrl)
.toPromise()
.then(response=>response.json().data作为英雄[])
.接住(这个.把手错误);
} // }}}
当我在最初的“英雄之旅”上执行相同的console.log时,数据中有一个数组,而这里有一个字符串。。。
我想我必须在某个地方转换字符串,但不管我怎么做,它都不起作用
(我也读了很多可以观察到的例子,但我也没有成功)
Help想告诉我如何。。。
短暂性脑缺血发作
JP你太接近了!这里的错误在于你如何处理承诺,以及误解它们如何回报。在本例中,您试图分配一个未定义的属性(
response.json().data
),而您想强制response.json()
作为类型Hero[]
,然后返回
您需要做的是确保在使用该调用将响应转换为JSON时,您有一个匹配的类型来分配响应。指南中的Hero
类型与您的回答不匹配,因此您会有错误
要检查您是否收到响应,请调用服务的getHeroes()
函数并记录返回值。可以对函数进行内部日志记录,但在这一点上,深入了解承诺的工作方式将比任何事情都更有帮助
getHeroes(): Promise<Hero[]> {
return this.http.get(this.heroesUrl)
.toPromise()
.then((response) => response.json() as Hero[])
.catch(this.handleError);
}
响应的内容类型是什么?您是否认为JSON.parse()令人印象深刻!你很快就解决了我的问题。即使有些要点更清楚,我仍然需要学习更多关于js和()等的知识。。。(例如,我不知道json()来自哪里)。
getHeroes(): Promise<Hero[]> {
return this.http.get(this.heroesUrl)
.toPromise()
.then((response) => {
console.log(response.json());
})
.catch(this.handleError);
}
getHeroes(): Promise<Hero[]> {
var r;
this.http.get(this.heroesUrl)
.toPromise()
.then((response) => r = response.json())
.catch(this.handleError);
console.log(r);
}