Get http.get response status code angular2
I need to get the status code of the next http call and return it as a string
//This method must return the status of the http response
confirmEmail(mailToken):Observable<String>{
return this.http.get(this.baseUrl+"users/activate?mailToken="+mailToken)
.map(this.extractData)
.catch(this.handleError);
}
THH!
source to share
Adding answer for Angular versions> = 4.3 (including 8) with a new HttpClient
one that replaceshttp
import {HttpClientModule} from '@angular/common/http'; // Notice it is imported from @angular/common/http instead of @angular/http
How to get response code or any other header:
http.get(
'${this.baseUrl}users/activate?mailToken=${mailToken}',
{observe: 'response'}
)
.subscribe(response => {
// You can access status:
console.log(response.status);
// Or any other header:
console.log(response.headers.get('X-Custom-Header'));
});
As noted in @Rbk's comment,
The object {observe: 'response'}
is what makes the complete answer object available.
source to share
Just change your code as follows to keep your responseStatus in the field:
responseStatus: number;
//This method must return the status of the http response
confirmEmail(mailToken):Observable<String> {
//Edited for working with HttpClient on Angular >= 4.3
return this.http.get(this.baseUrl+"users/activate?mailToken="+mailToken, {observe: 'response'})
.map((response: Response) => {
this.responseStatus = response.status;
return this.extractData(response);
}
.catch(this.handleError);
}
And then render it in your component HTML template:
<p class='responseStatus'>{{responseStatus}}</p>
source to share
If you have query parameters and other parameters you need to add
{ observe: 'response', params: new HttpParams() }
to your method .get, .post, .patch, etc. as the second argument. Then you can access it through the callback response.status. Please note, if you are like me and need to do this, put the parameters in the same array.
create(resource: Resource, query?: Query): Observable<Resource> {
return this._httpClient
.post('${this._apiUrl}${this._endpoint}', this._serializer.toJson(resource), {
params: query ? new HttpParams({ fromObject: query.toOData() }) : null,
observe: 'response'
})
.map(
(response): Resource => {
this.handleStatusCode(response.status);
try {
return this._serializer.fromJson(response);
} catch (err) {
throw new Error('Error parsing resource. Details: ${err}');
}
}
);
}
source to share