【发布时间】:2016-08-24 06:58:54
【问题描述】:
我刚刚按照 jhon papa 的示例创建了示例应用程序。(快速启动程序)。 我设计了服务类来从我的休息服务中获取 json 数据 http://localhost:8081//Myserver/rest/heros
import { Injectable } from '@angular/core';
import { Http, Response , Headers} from '@angular/http';
import 'rxjs/add/operator/toPromise';
import { Hero } from './hero';
import { Code } from './code';
import { HEROES } from './mock-heroes';
@Injectable()
export class HeroService {
constructor(private http: Http) { }
private heroesUrl = 'http://localhost:8081//Myserver/rest/heros'; // URL to web api
getHeroes() {
return this.http.get(this.heroesUrl)
.toPromise()
.then(
response => response.json() as Hero[])
.catch(this.handleError);
}
getHero(id: number) {
return this.getHeroes()
.then(heroes => heroes.find(hero => hero.id === id));
}
private handleError(error: any) {
console.error('An error occurred', error);
return Promise.reject(error.message || error);
}
}
服务类工作正常,英雄也列在 UI 中(忘记这里的 CROS 起源问题)。但是我在这里注意到一件事,其余对 http://localhost:8081//Myserver/rest/heros 的调用是直接从浏览器发送的(我可以在开发工具的网络选项卡中看到它)。
根据我的应用程序,它不应该从浏览器发送,而是应该像 JSF 中的后端 bean 类一样进行处理,然后将数据提供给相关的组件。我相信这也将解决我的 CROS 起源问题。 Dose Angular2 有这样的选择吗?请提出正确的实现方法。
【问题讨论】: