我的Api为我提供了警告和错误的不同类型的状态代码。我必须根据回复显示不同的警报。
我正在调用这样的http服务:
service.ts
@Injectable()
export class TestService {
getData () {
return this.http.get('publi/api/list')
.map((response: Response) => response.json())
.catch(this.handleError);
}
public handleError(error: any): Observable<any> {
console.log(error, 'error!!!!!!');
return Observable.throw(error.json() || 'server error');
}
}
component.ts
export class TestComponent implements OnInit {
constructor(private testService: TestService) { }
ngOnInit() {
this.getAllList();
}
getAllList() {
this.testService.getData()
.subscribe(res => this.sucessList(res),
err => this.errList(err))
}
sucessList(res) {
console.log(res, 'sucessApprovalsPermissions');
}
// Here I need varions
errList(err) {
console.log(err, 'err');
this.errApprovalPermissions = err.message.message;
}
}
答案 0 :(得分:1)
如果我是你,我会做什么,是一个拦截器。拦截器是在向您提供请求数据之前调用的服务。
例如,这是一个错误拦截器:
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: ErrorHandlerService, multi: true }
]
然后您需要在模块中提供它,如下所示:
var listOfFilesUploaded = [];
function uploadToServer(recordRTC, callback) {
var blob = recordRTC instanceof Blob ? recordRTC : recordRTC.blob;
var fileType = blob.type.split('/')[0] || 'audio';
var fileName = (Math.random() * 1000).toString().replace('.', '');
if (fileType === 'audio') {
fileName += '.' + (!!navigator.mozGetUserMedia ? 'ogg' : 'wav');
} else {
fileName += '.webm';
}
// create FormData
var formData = new FormData();
formData.append(fileType + '-filename', fileName);
formData.append(fileType + '-blob', blob);
callback('Uploading ' + fileType + ' recording to server.');
makeXMLHttpRequest('save.php', formData, function(progress) {
if (progress !== 'upload-ended') {
callback(progress);
return;
}
现在你需要做的就是处理捕获中的错误代码,你很高兴!
答案 1 :(得分:0)
你可以使用像这样的订阅方法
getAllList() {
this.testService.getData().subscribe(response => {
if (response.status === 200 ) {
// Write your own code here
}
else if (response.status === 203) {
// your own code
}
}, error => {
if (error) {
// your own code
}
});
}
通过这种方式,您可以获得不同的状态代码。
但是如果你想捕捉错误的话!那么我建议你按照这个:How to deal with http status codes other than 200 in Angular 2