2016-12-30 21 views
1

http://www.ietf.orgでhttpを使用してAPIをリクエストしたときのレスポンスに関する情報が必要です。 レスポンスタイム、レスポンスサイズなどの情報ect。私はレスポンスヘッダを取得したいIonic 2:httpリクエストでレスポンスのヘッダーを取得

let url : "[myUrl]"; 
this.http.get(url).map(res => res.json()).subscribe(res => { 
    console.log(res); 
}); 

私はこのコードを使用します。

誰かがこれを行う方法を知っていますか? :)

答えて

2
this.http.get(url).map(res => { 
    console.log(res.headers); // Print http header 
    return res.json(); 
}).subscribe(res => { 
    console.log(res); 
}); 

角度Http要求は、サーバが経過したすべての情報が含まれていObservableを返します(私だけにconsole.logを追加しました)結果であなたがやりたいことができます。したがって、応答からheadersにはres.headersとアクセスできます。これは、ヘッダーに存在していると仮定すると、

res.headers.get('Content-Length')

を使用できるレスポンスボディのサイズを取得するには。したがって、角度が提供するものではなく、応答が伝える情報に依存します。

応答時間の情報は、正確に何を探しているかによって異なります。サーバーの応答時間がnode.jsの場合は、thisパッケージを使用できます。その後応じて、response timeは、あなたが(ネットワーク遅延を含む)の合計応答時間をしたい場合は、使用にJavaScriptタイマーを持っており、要求と応答の間の時間差があります

res.headers.get('X-Response-Time')

を得ることができます。

あなたが探している情報は、主に角度からではなくサーバーの応答に依存しています。ブラウザにはCORS(応答ヘッダーのAccess-Control-Expose-Headers)に注意してください。ヘッダーhereの詳細を理解することができます。それが役に立てば幸い。

+0

Humさん、ありがとうございます。しかし、2つのケースでは、ログは私に "null"を返しますか? –

+0

console.log(res.headers.get( 'Content-Length')); –

+1

'' CORS''はクライアント側のヘッダーを隠すことができます。応答ヘッダーに '' Access-Control-Expose-Headers''を追加して、応答したヘッダーにアクセスできるようにします。それが助けてくれたらと思います。 – raj

1

できます。マップ関数では、HTTP呼び出しに関するすべての情報を取得できます。あなたは

this.http.get(url).map(res => { 
    console.log(res); // Print http details 
    return res.json(); 
}).subscribe(res => { 
    console.log(res); 
}); 
+0

ありがとう! :Dしかし、私は応答の大きさや応答時間がありませんか? –

+1

これはResponseオブジェクトの内容です:) Angularチームがもっと多くのものを追加することを願っています。 –

関連する問題