服务器错误时如何获取响应内容

时间:2020-03-22 16:49:53

标签: angular angular-promise

希望服务器返回错误代码为5XX或4XX时,我可以获取响应内容。

这是我的配置:

API Rest(Laravel):

public function login(Request $request) {
$this->validateLogin($request);
if ($this->attemptLogin($request)) {
    $user = $this->guard()->user();
    $user->generateToken();
    return response()->json($user, 200);
}
return response()->json('Login or password unknown', 401);

}

角度服务:

public getUser(user: User): Observable<any> {
  return this.httpClient.post(this.employeeAPI + 
  'login', JSON.stringify(user), { headers: this.headers });
}

角度组件:

public login(): void {
  this.loginService.getUser(this.user).subscribe(
    (user) => {
      this.user = user;
      this.router.navigate(['/home']);
    },
    (error) => {
    // Is it possible to get the content of response ?

    }
  );
}

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您想以更高的视角看待响应,则必须观察到这样的响应:

 return this.httpClient.post(this.employeeAPI
     + 'login', JSON.stringify(user), { headers: this.headers, observe: 'response' });

响应将为HttpResponse类型。这意味着您可以从响应中自己提取body,但也可以检索状态代码。