gpt4 book ai didi

angular - 我们如何在 Angular 4 中获取 HttpClient 状态码

转载 作者:行者123 更新时间:2023-12-01 13:19:34 26 4
gpt4 key购买 nike

嗨,Angular 的新手,我在获取 HTTP 模块中的 HTTP 状态代码时遇到了问题,我可以使用 轻松获取响应代码响应状态 ,但是当我使用 HttpClient模块我无法获取 response.status,它显示找不到状态。

那么,如何使用 HttpClient 获取 response.status Angular 4&5 中的模块.请帮忙。

休息提供者:-

@Injectable()
export class RestProvider {

private apiUrl = 'https://restcountries.eu/rest/v2/al';

constructor(public http: HttpClient) {
console.log('Hello RestProvider Provider');
}

getCountries(): Observable<{}> {
return this.http.get(this.apiUrl).pipe(
map(this.extractData),
catchError(this.handleError)
);
}

private extractData(res: Response) {
let body = res;
return body || { };
}

private handleError (error: Response | any) {
let errMsg: string;
if (error instanceof Response) {
const err = error || '';
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
}
console.error(errMsg);
return Observable.throw(errMsg);
}

}

主页:
export class HomePage {

responseStatus: number;

countries: any;
errorMessage: string;

constructor(public navCtrl: NavController, public navParams: NavParams, public rest: RestProvider) {
}

ionViewDidLoad() {
this.getCountries();
}

getCountries() {
this.rest.getCountries().subscribe(res =>{
this.countries=res;
console("status code--->"+res.status)
},
err=>{
console("status code--->"+err.status)
})

}
}

最佳答案

要获得完整的响应,您需要向响应添加额外的属性,即 observe像这样 -

getCountries(): Observable<{}> {
return this.http.get(this.apiUrl, {observe: 'response'}).pipe(
map(this.extractData),
catchError(this.handleError)
);
}

有关更多信息,您可以引用 -
  • https://angular.io/guide/http#reading-the-full-response
  • HttpClient get status + send headers
  • 关于angular - 我们如何在 Angular 4 中获取 HttpClient 状态码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50920833/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com