Get status code http.get response angular2

折月煮酒 提交于 2019-12-09 14:45:44

问题


I need to get the status code of the following 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);

}

thx!


回答1:


Adding answer for versions of Angular >= 4.3 (including 9) with new HttpClient that replaces http

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 the comment by @Rbk,

The object {observe: 'response'} is what makes the full response object available.

Check Documentation




回答2:


Just modify your code as following to store your responseStatus in a 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 display it in your component HTML template :

<p class='responseStatus'>{{responseStatus}}</p>



回答3:


This is how I did it :

checkResponse() {
  this.http.get(this.url, { observe: 'response' })
  .subscribe(response => console.log(response.status));
}

Using Angular 7.




回答4:


Its simple !!

Inside your extractData function

extractData (res){
//res.status  will be your status code
// res.statusText  will be your status Text
}



回答5:


    confirmEmail(mailToken):Observable<String> {
   return this.http.get(this.baseUrl+"users/activate?mailToken="+mailToken)
     .pipe(map(data => {
       return data.httpStatus
         }));
     .catch(this.handleError);
}

Hope, this will solve your problem.




回答6:


not Working with me

look my method in c# with aspnet core

    public IActionResult Insert([FromBody]TrocoSolidarioDTO x)
    {
        if (x == null)
        {
            return BadRequest();
        }
        try
        {
            return Ok("Working");
        }
        catch (Exception ex)
        {
            return BadRequest(ex.Message);
        }
    }



回答7:


If you have query parameters and other options you need to add

{ observe: 'response', params: new HttpParams() } 

to your .get, .post, .patch etc method as the second argument. Then you can access it via the callback response.status. Note if you are like me and needed to do this, put your parameter options 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}`);
        }
      }
    );
}


来源:https://stackoverflow.com/questions/43683052/get-status-code-http-get-response-angular2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!