2016-12-30 1 views
1

이오닉 2/각도 2에서 http를 사용하여 API를 요청할 때 응답에 대한 정보가 필요합니다. 정보는 다음과 같습니다. 응답 시간, 응답 크기 ... ect. 내가 응답 헤더를 얻으려면이온 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)를 할 수 있습니다. 따라서 응답에서 headersres.headers으로 액세스 할 수 있습니다. 당신이 사용할 수있는 응답 본체의 크기,

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

를 얻으려면이 헤더에 존재하는 가정. 따라서 각도가 제공하는 것이 아니라 응답이 전달하는 정보에 따라 달라집니다.

응답 시간 정보는 사용자가 정확히 무엇을 찾고 있는지에 따라 다릅니다. 서버 응답 시간이 node.js 인 경우 this 패키지를 사용할 수 있습니다. 당신이 전체 응답 (네트워크 지연 포함) 시간은 사용 JavaScript 타이머를 가지고 요청과 응답 사이의 시간 차이를 찾을 수 원하는 경우 응답, response time

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

얻을 수있다.

그래서 찾고있는 정보는 주로 각도보다는 서버 응답에 의존합니다. 그리고 브라우저에 CORS (응답 헤더에 Access-Control-Expose-Headers)을 조심하십시오. 헤더에 대한 자세한 내용은 here을 참조하십시오. 희망이 도움이됩니다.

+0

Hum 감사합니다.하지만 두 경우에 로그가 "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 팀에서 더 많은 것을 추가 할 수 있기를 바랍니다. –

관련 문제