2016-10-16 10 views
5

APIが返すエラーボディを解析するにはどうすればよいか質問したいと思います。Angular 2の解析エラーボディ

これは、APIの戻りの画像です: enter image description here

ここに私のコードです:

login(username,password){ 
     let headers = new Headers(); 
     headers.append('Content-Type','application/json'); 

     return this.http.post(this.configEnvironment.url() + "oauth/access_token", 
      JSON.stringify(
       { 
        username: username, 
        password: password, 
        grant_type: "password", 
        client_id: "xxxxxxx", 
        client_secret: "xxxxxxxx" 
       } 
      ), 
      { headers } 
     ) 
     .map(res => res.json()) 
     .catch((err:any) =>{ 
      console.log(err); 
      return Observable.throw(new Error(err)); 
     }); 

    } 

私はこの使用してURL、ステータス、STATUSTEXTとなどにアクセスすることができます。

err.status,err,url,error.statusText 

私の問題は、エラーボディの値を取得できないということです。

答えて

11

catchには実際にResponseが届いています。あなたはjson()

import { Response } from "@angular/http"; 
... 
.catch((err:Response) =>{ 
      let details = err.json().error; 
      console.log(details); 
      return Observable.throw(new Error(details)); 
     }); 

ノートとその詳細情報にアクセスすることができます。この答えは、@angular/httpライブラリについてです。 Angular 5以降、このライブラリは推奨されなくなりました。@angular/common/http

+0

ありがとうございます!これは私の問題を解決する –

+0

@SydneyLoteria問題はありません。 'err'の型を' Any'から 'Response'に変更した方がIDEの援助が得やすくなります。 – BeetleJuice

+0

Angular 5 @ Angular/Common/httpメソッドとは何ですか? –

関連する問題