2016-10-06 6 views
2

これは私のデモコードです:Angular2でREST APIを使用するにはどうすればよいですか?

products.service.ts

getProducts(){ 
this.headers = new Headers(); 
this.headers.append("Content-Type", 'application/json'); 
this.headers.append("Authorization", 'Bearer ' + localStorage.getItem('id_token')); 
return this.http.get('http://mydomain.azurewebsites.net/api/products',{headers:headers}).map(res => res.json().data); 
} 

products.component.ts

constructor(private productsService: ProductsService) { } 

ngOnInit() { 
this.productsService.getProducts().subscribe((res) => { 
    console.log(res); 
}); 
} 

ngModuleデコレータで何かをインポートすることがnescessaryですREST APIを使用するか、コードが間違っていますか? Postman Chrome Extensionでは必要なデータを取得できますが、Angular 2コードでは取得できません。

私の問題をよく説明してくれることを願っています。

更新

これらは私が取得エラーです:

enter image description here

+0

期待しているデータの代わりに何を得ますか?エラー?何もない? –

+0

は404のように見えますが、エラーの_subscribe_にはハンドラがありません。 – Nicolai

+0

開発者ウィンドウのネットワークタブを調べて、実際の要求がどのURLに送信されているか確認できますか? –

答えて

3

。問題はdissapeared in-mem serverととin-mem server dataをコメントした後

app.module.ts

providers: [ 
    ProductsService, 
    // { provide: XHRBackend, useClass: InMemoryBackendService }, // in-mem server 
    // { provide: SEED_DATA, useClass: InMemoryDataService }  // in-mem server data 
    ] 

これが問題でした。

1

あなたはリクエストのヘッダーを設定していません。 Headersオブジェクトを宣言しますが、実際には何もしません。

あなたはこのようget機能でそれらを設定する必要があります:あなたはあなたの時間を無駄に作るため申し訳ありません

return this.http 
      .get('http://mydomain.azurewebsites.net/api/products', { headers: headers }) 
      .map(res => res.json().data); 
+0

申し訳ありませんが、実際にはヘッダーを設定していましたが、間違ってコピーして貼り付けました。とにかく注目してくれてありがとう。 – Elkin

関連する問題