Angular2休息在后台调用

时间:2016-08-24 06:58:55

标签: node.js angular

我刚刚根据 jhon papa 的例子创建了示例应用程序。(快速启动程序)。 我设计了服务类来从我的休息服务 http://localhost:8081//Myserver/rest/heros

获取json数据
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 orgin问题)。但我在这里注意到的一件事是 http://localhost:8081//Myserver/rest/heros 的其余调用直接从浏览器发送(我可以在Developer工具的网络选项卡中看到它)。

根据我的应用程序,它不应该从浏览器发送,而是应该像JSF中的后端bean类一样进行处理,然后将数据提供给相关的Component。我相信这也将解决我的CROS orgin问题。剂量Angular2有这样的选择吗?请提出正确的方法来实现它。

1 个答案:

答案 0 :(得分:0)

您可以使用WebWorkers将代码执行移出主UI线程。 Angular2为此提供直接支持(实验性)。

我怀疑这会改变CORS方面的任何内容。 要使CORS正常工作,您的服务器需要使用正确的CORS标头进行响应。

另见http://www.syntaxsuccess.com/viewarticle/web-workers-in-angular-2.0