2016-09-19 17 views
0

Observablesを使用してAngular2を で実行しているEnsembleからREST APIを取得しようとしています。私はその問題が何であるか分かりません。 これは私のコードがどのように見えるかを示しています(エラーはここに添付されています)角度2のhttp.getとobservablesのデバッグ

正しいヘッダーが追加されています。確認するには、 ヘッダーの値を変更し、ヘッダー の名前を変更すると415が表示されることを確認できます。


let header = new Headers(); 
    header.append('Content-type', 'application/json'); 
    this.http.get('http://rest.ensembl.org/lookup/id/ENSG00000157764?expand=0', 
{ 
     headers: header 
    }) 
     .map((res: Response) => res.json()) 
     .subscribe(
     data => { 
     console.log('data'); 
     this.data = data; 
     }, 
     error => { 
     this.errorMessage = <any>error; 
     }, 
    () => console.log('random look complete')); 

私もそれは同じ IDおよびヘッダを使用して、任意の問題なく動作しますポストマンに アプリケーション/ JSONとして設定のみのContent-Typeヘッダで自分のAPIを試してみました。

さらにデバッグするために、私は何を逃してる細かい


this.http.get('http://jsonplaceholder.typicode.com/photos/1') 
    .map((res: Response) => res.json()) 
     .subscribe(res => { 
      this.data = res; 
      this.errorMessage = false; 
     }); 

を作品別のAPIを使用?

他にもobservablessをデバッグする簡単な方法があるのでしょうか?すべてのリソースが役立ちます。


更新

私はこの問題は、RC5に 角度2(私はまだ最終的なリリースをチェックしていない)であるものを考え出しました。 http.get APIには2つのパラメータ(url、RequestOptionsArg)があります。

私はRequestOptionsArgを使用している場合、空であればすべてのパラメータを本体に渡す必要があります。

本文には、本体が空の場合はnullまたは未定義が割り当てられます。しかし、APIはtoString()を呼び出し、nullとそのための問題のチェックがないと仮定しています。

答えて

1

エラーがあるようにまあ、それはなります

ORIGINAL EXCEPTION: TypeError: Cannot read property 'toString' of null 
ORIGINAL STACKTRACE: 
TypeError: Cannot read property 'toString' of null 
    at Request.Body.text (http://172.17.110.205:3000/vendor.bundle.js:47211:26) 
    at Request.getBody (http://172.17.110.205:3000/vendor.bundle.js:49014:29) 
    at Observable._subscribe (http://172.17.110.205:3000/vendor.bundle.js:46832:37) 
    at Observable.subscribe (http://172.17.110.205:3000/vendor.bundle.js:87952:62) 
    at Observable._subscribe (http://172.17.110.205:3000/vendor.bundle.js:88009:28) 
    at MapOperator.call (http://172.17.110.205:3000/vendor.bundle.js:90202:23) 
    at Observable.subscribe (http://172.17.110.205:3000/vendor.bundle.js:87952:38) 
    at SearchComponent.onSubmit (http://172.17.110.205:3000/0.chunk.js:37:14) 
    at DebugAppView._View_SearchComponent2._handle_click_14_0 (SearchComponent.ngfactory.js:730:35) 

だから、要求がすべてのボディを返すのですか?あなたのコードは正常に見えるので、問題はおそらく他の場所です。上記のコードはSearchComponentから来ていますか?

rxjsコードをデバッグすることについては、Googleに興味深い記事がありますが、通常はdo()演算子を使用してどのデータが演算子チェーンを経由しているのかを確認するオプションがあります。

注目すべきページ:

関連する問題