Angular 当我在httpClient中发现错误时,如何获取json正文

Angular 当我在httpClient中发现错误时,如何获取json正文,angular,Angular,我正在与httpClient一起使用Angular。RESTAPI在一种情况下返回422不可处理实体状态,该状态作为错误接收。但API还包含一些JSON数据,其中包含有关错误的信息。我如何访问这些数据 服务 createAnalyzer(主体:任意):可观察{ 返回this.http.post(this._endpoint+'/api/analyzers',body) .pipe(catchError(this.handleError)); } 私有句柄错误(错误){ 让errorMessage

我正在与httpClient一起使用Angular。RESTAPI在一种情况下返回422不可处理实体状态,该状态作为错误接收。但API还包含一些JSON数据,其中包含有关错误的信息。我如何访问这些数据

服务

createAnalyzer(主体:任意):可观察{
返回this.http.post(this._endpoint+'/api/analyzers',body)
.pipe(catchError(this.handleError));
}
私有句柄错误(错误){
让errorMessage=“”
if(error.error instanceof ErrorEvent){
//客户端错误
errorMessage=`Error:${Error.Error.message}`;
}否则{
//服务器端错误
errorMessage=`错误代码:${Error.status}\n消息:${Error.message}`;
}
返回投掷者(错误消息)
}

错误响应主体可以在
catchError
回调参数的
error
属性中找到

因此,如果您有以下回答:

{
  "message": "Invalid credentials"
}
您可以使用如下方式使用
catchError
捕获它:

login():可观察{
常量url=“”;//待办事项
const body={};//TODO
返回此.http.post(url,body).pipe(
轻触(response=>console.log('Success!')),
catchError((err:any)=>{
const response=err.error;
const message=response.message;
log(`Error:${message}`);
返回(空);
})
);
}

最简单的方法是在错误处理程序中执行
console.log(error)
。它将提供错误结构和对象所在位置的清晰图片。您可以访问catchError、error.error.status中的状态代码,并基于此进行分支