如何在Angular应用程序上显示来自Spring Boot的异常消息

2020年10月9日 29点热度 0条评论

我当时从事Spring Boot + Angle集成的工作,我想知道如何在我的angular应用程序中显示异常消息。我在春季启动中创建了异常处理程序类,如下所示:

@ControllerAdvice
public class ExceptionController {

@ExceptionHandler(value={CommonException.class})
public ResponseEntity<Object> noResult(CommonException e){
    HttpStatus status=HttpStatus.BAD_REQUEST;       
    return new ResponseEntity<Object>(new CustomExceptionPayload(e.getMessage(),"400"), status);
}
}

在角度方面,我正在使用httpclient通过服务类发送请求,如下所示:

public generatFile(file:any,to:string,from:string,proj_name:string,count:string,env:string,event:string){
    console.log("in service");
    const formData=new FormData();
    formData.append('file',file);
    formData.append('to',to);
    formData.append('from',from);
    formData.append('proj_name',proj_name);
    formData.append('event',event);
    formData.append('env',env);
    formData.append('count',count);

    return this.http.post(this.baseUrl+'/events',formData,{
        observe: 'response',
        responseType: 'blob' as 'json'
      }
    );
}

在我的主要组件中收到这样的响应:

this.service.generatFile(this.file,new Date(this.to).toLocaleDateString(),new Date(this.from).toLocaleDateString(),this.proj_name,this.count,this.env,this.event).subscribe((resp: any) => {
    const blob = new Blob([resp.body], { type: resp.headers.get('Content-Type') });
    saveAs(blob, this.fileName);
    this.loading=false;
  },((error:any) =>{
    this.message=error.message;
    this.loading=false;
  }

我正在使用angular。中的error.message获取上面给出的错误消息,但是没有用。

当我使用邮递员时,我得到以下答复:

{
"message": "number of events per file is greater than number of failed events",
"status": "400"
}

我不知道如何从Spring Boot中发送相同的错误消息,如果有人可以提供代码答案,我将不胜感激。

解决方案如下:

您可以使用来自Observable的错误对象。

this.service.generatFile().subscribe(
    (res) => {
        // handle response
    }, (err) => {
        // handle errors
    });