use*_*867 5 angular angular-httpclient
如何获取响应POST请求的状态码?我的服务方法返回:
return this.httpClient.post(url, body, {observe: 'response'})
.catch(HandleError.handleErrorClient);
Run Code Online (Sandbox Code Playgroud)
在我的组件中,我调用此方法并订阅:
.subscribe(
res => {
console.log(res);
console.log(JSON.stringify(res));
this.responseStatus = res.status;
console.log(this.responseStatus);
},
err => {
this.responseStatus = err.status;
});
Run Code Online (Sandbox Code Playgroud)
但是在浏览器控制台中没有任何内容-但是,当请求包含错误时,则this.responseStatus = err.status返回正确的状态代码,但是res.status或者res不包含状态代码,则仅返回响应主体。
编辑:
零件:
responseStatus: number;
loginUser() {
this.loginData = this.loginForm.getRawValue();
this.userLoginService.loginUser(this.loginData)
.subscribe(
res => {
console.log('bla bla');
this.responseStatus = res.status;
},
err => {
console.log(err.status); //401
console.log(err.error.error); //undefined
console.log(JSON.parse(err.error).error); //unauthorized
this.responseStatus = err.status;
});
}
Run Code Online (Sandbox Code Playgroud)
服务:
import {Http} from "@angular/http";
import {HttpClient} from '@angular/common/http';
...
constructor(private http: Http, private httpClient: HttpClient) {
}
loginUser(loginData: LoginForm) {
return this.httpClient.post(this.loginURL, loginData, {observe: 'response'})
.catch(HandleError.handleError);
}
Run Code Online (Sandbox Code Playgroud)
处理错误
export class HandleError {
static handleError(error: Response | any) {
let errMsg: string;
if (error instanceof Response) {
const body = error.json() || '';
const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
}
console.error(errMsg);
return Observable.throw(error);
}
}
Run Code Online (Sandbox Code Playgroud)
POST:/ api / login
我已正确登录,但仅此而已...我希望在浏览器控制台中:console.log('bla bla');。随着Http不存在问题。
| 归档时间: |
|
| 查看次数: |
8165 次 |
| 最近记录: |