Angular 6-使用Wait for http客户端,如果失败,如何获取状态代码

Angular 6-使用Wait for http客户端,如果失败,如何获取状态代码,angular,Angular,假设我让response=await this.http.postrl、list.toPromise,那么在仍然使用await的情况下,是否有任何方法可以获取状态代码,例如200、404等等。谢谢为此,您必须使用一个try-and-catch块。您将在catch块中获得错误 catch块将获得HttpErrorResponse类型的实例,该实例上有一个status属性 大概是这样的: import { Component } from '@angular/core'; import { Http

假设我让response=await this.http.postrl、list.toPromise,那么在仍然使用await的情况下,是否有任何方法可以获取状态代码,例如200、404等等。谢谢

为此,您必须使用一个try-and-catch块。您将在catch块中获得错误

catch块将获得HttpErrorResponse类型的实例,该实例上有一个status属性

大概是这样的:

import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular';

  constructor(private http: HttpClient) {}

  async ngOnInit () {
    try {
      const response = await this.http.get('https://jsonplaceholder.typicode.com/users/13').toPromise();
      console.log(response);
    } catch(error) {
      console.log('Error Status: ', error.status);
    }
  }

}
import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular';

  constructor(private http: HttpClient) {}

  async ngOnInit () {
    try {
      const response = await this.http.get('https://jsonplaceholder.typicode.com/users/1', { observe: 'response' }).toPromise();
      console.log('Response Status: ', response.status);
      console.log('Response Body: ', response.body);
    } catch(error) {
      console.log('Error Status: ', error.status);
    }
  }

}
更新: 由于您使用的是HttpClient,而没有观察到“响应”,因此您只能在得到的响应中获得响应负载数据。如果您还需要它的状态,那么必须将其作为一个httpOption{observe:'response'}进行paas。大概是这样的:

import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular';

  constructor(private http: HttpClient) {}

  async ngOnInit () {
    try {
      const response = await this.http.get('https://jsonplaceholder.typicode.com/users/13').toPromise();
      console.log(response);
    } catch(error) {
      console.log('Error Status: ', error.status);
    }
  }

}
import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular';

  constructor(private http: HttpClient) {}

  async ngOnInit () {
    try {
      const response = await this.http.get('https://jsonplaceholder.typicode.com/users/1', { observe: 'response' }).toPromise();
      console.log('Response Status: ', response.status);
      console.log('Response Body: ', response.body);
    } catch(error) {
      console.log('Error Status: ', error.status);
    }
  }

}
这是你的参考资料的更新

你将不得不使用一个尝试和捕捉块。您将在catch块中获得错误

catch块将获得HttpErrorResponse类型的实例,该实例上有一个status属性

大概是这样的:

import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular';

  constructor(private http: HttpClient) {}

  async ngOnInit () {
    try {
      const response = await this.http.get('https://jsonplaceholder.typicode.com/users/13').toPromise();
      console.log(response);
    } catch(error) {
      console.log('Error Status: ', error.status);
    }
  }

}
import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular';

  constructor(private http: HttpClient) {}

  async ngOnInit () {
    try {
      const response = await this.http.get('https://jsonplaceholder.typicode.com/users/1', { observe: 'response' }).toPromise();
      console.log('Response Status: ', response.status);
      console.log('Response Body: ', response.body);
    } catch(error) {
      console.log('Error Status: ', error.status);
    }
  }

}
更新: 由于您使用的是HttpClient,而没有观察到“响应”,因此您只能在得到的响应中获得响应负载数据。如果您还需要它的状态,那么必须将其作为一个httpOption{observe:'response'}进行paas。大概是这样的:

import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular';

  constructor(private http: HttpClient) {}

  async ngOnInit () {
    try {
      const response = await this.http.get('https://jsonplaceholder.typicode.com/users/13').toPromise();
      console.log(response);
    } catch(error) {
      console.log('Error Status: ', error.status);
    }
  }

}
import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular';

  constructor(private http: HttpClient) {}

  async ngOnInit () {
    try {
      const response = await this.http.get('https://jsonplaceholder.typicode.com/users/1', { observe: 'response' }).toPromise();
      console.log('Response Status: ', response.status);
      console.log('Response Body: ', response.body);
    } catch(error) {
      console.log('Error Status: ', error.status);
    }
  }

}
这是你的参考资料的更新


您应该使用自定义请求HttpClient.request而不是post来获取响应代码您应该使用自定义请求HttpClient.request而不是post来获取响应代码Hanks SiddAjmera,看起来很棒。还有一个问题。如何区分200和201?谢谢我试图获取response.status,但未定义。谢谢lot@Ben,因为您使用的是HttpClient,而没有观察到响应,所以您只能在得到的响应中获得响应负载数据。如果您还需要它的状态,那么必须将其作为一个httpOption{observe:'response'}进行paas。让我为你更新答案。谢谢,@SiddAjmera,你的答案很有帮助。谢谢SiddAjmera,看起来很棒。还有一个问题。如何区分200和201?谢谢我试图获取response.status,但未定义。谢谢lot@Ben,因为您使用的是HttpClient,而没有观察到响应,所以您只能在得到的响应中获得响应负载数据。如果您还需要它的状态,那么必须将其作为一个httpOption{observe:'response'}进行paas。让我为你更新答案。谢谢,@SiddAjmera,你的答案帮助很大。