Angular 4.3 HttpClient (Angular访问 REST Web 服务) 二、Http
Http Get响应(Response)类型转换接着上一节。 import { Component,OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Component({
selector: 'app-root',templateUrl: './app.component.html',styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
title = 'app';
results = '';
constructor(private http: HttpClient){
}
ngOnInit(): void {
this.http.get<UserResponse>('https://api.github.com/users/seeschweiler').subscribe(data => {
//console.log(data);
console.log("User Login: " + data.login);
console.log("Bio: " + data.bio);
console.log("Company: " + data.company);
});
}
}
interface UserResponse {
login: string;
bio: string;
company: string;
}
错误处理1。由于一些可预见或不可预见的状况,会导致 HTTP失败。因此应该总是有处理这些错误状况的代码存在。 Get的subscribe方法有两个参数 未回调函数,用于处理Get成功与失败的情况。 subscribe(next?: (value: T) => void,error?: (error: any) => void,complete?: () => void): Subscription;
失败处理 this.http.get<UserResponse>('https://api.github.com/users/seeschweiler').subscribe(
data => {
console.log("User Login: " + data.login);
console.log("Bio: " + data.bio);
console.log("Company: " + data.company);
},//新增失败处理
err => {
console.log("Error occured.")
}
);
2。失败详细信息:错误处理回调函数参数类型是any,可将其转换为HttpErrorResponse类型,并可获取更多错误属性信息。 HttpErrorResponse 需要从@angular/common/http导入才能使用。 import { Component,OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import {HttpErrorResponse} from '@angular/common/http';
@Component({
selector: 'app-root',templateUrl: './app.component.html',styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
title = 'app';
results = '';
constructor(private http: HttpClient){
}
ngOnInit(): void {
this.http.get<UserResponse>('https://api.github.com/users/seeschweiler').subscribe(data => {
console.log(data);
console.log("User Login: " + data.login);
console.log("Bio: " + data.bio);
console.log("Company: " + data.company);
},(err: HttpErrorResponse) => {
if (err.error instanceof Error) {
console.log("Client-side error occured.");
} else {
console.log("Server-side error occured.");
}
}
);
}
}
interface UserResponse {
login: string;
bio: string;
company: string;
} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |