【发布时间】:2017-03-23 13:22:23
【问题描述】:
我正在开发一个 Angular 应用程序,在该应用程序中我通过 HTTP 进行休息调用,如下所示:
login(email, password) {
let headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let options = new RequestOptions({ headers: headers });
let body = `identity=${email}&password=${password}`;
return this.http.post(`${this._configService.getBaseUrl()}/login`, body, options)
.map((res: any) => {
let response: any = JSON.parse(res._body);
if (response.success == 0) {
Observable.throw(response); // not working
} else if (response.success == 1) {
console.log('success');
localStorage.setItem('auth_token', 'authenticated');
this.loggedIn = true;
return response;
}
});
}
基本上我希望我的组件在订阅调用中得到响应和错误,即
this._authenticateService.login(this.loginObj['identity'],this.loginObj['password']).subscribe(
(success)=>{
this.credentialsError=null;
this.loginObj={};
this._router.navigate(['dashboard']);
},
(error)=>{
console.log(error);
this.credentialsError=error;
}
);
但我的 API 总是返回成功,因为它是这样定义的。
如果是response.success == 0,我如何抛出错误消息,以便在订阅回调的错误参数中访问它?
【问题讨论】:
-
你得到的状态码是什么,我的意思是它可以是0?
-
@MrJSingh 设计 API 的人只返回成功为 0 或 1 来验证响应。所以我的操作是成功的,它会返回成功 =1 或者它会返回成功 = 0 .now如果成功为 0,我想抛出错误。这可能吗?
-
让我试试我的应用,技术上应该是可以的。
-
试试这个 return Observable.throw(response);
-
您可以尝试这样做:这是一个类似的案例stackoverflow.com/a/55286461/8342681
标签: javascript angular typescript rxjs