带有弹簧响应实体的Angular 6中的错误消息

时间:2019-02-04 10:59:45

标签: angular spring-boot

我有一个带有Springboot和Angular 6的Web应用程序。

带有详细错误消息的响应实体未在Angular中显示正确的错误(而不是“无效的Excel文件”显示“            http://localhost:8081/api/v1/activities/excel/import:确定为500”)

控制器代码:

...
@PostMapping("/activities/excel/import")
public ResponseEntity<?> import(...) {
    return new ResponseEntity<> ("Invalid Excel file", HttpStatus.BAD_REQUEST);
}
...

UI(角度6):

importFromExcel() {
    this.activityService.importFromExcel(this.file).subscribe(
        (result) => {...},
        (error) => {
            console.log (error.error) //displays undefined
            console.log (error.name) //displays undefined
            console.log (error.message) //displays  undefined
            console.log(JSON.stringify(error)) //displays Http failure response for http://localhost:8081/api/v1/activities/excel/import: 500 OK 
        }
    )
}         

如何获取HTTP响应正文?


解决的问题
拦截器(已在代码的其他部分添加)正在以不完整的方式处理来自后端的错误消息。结果,在应用程序的某些位置(例如我的示例),错误消息不再显示。发现问题:)。

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式检索http响应正文:

this.activityService.importFromExcel(this.file).subscribe(
  data => console.log('success', data),
  error => console.log('oops', error.error)
);

error.error应该包含HTTP响应正文。

请检查以下链接以获取更多信息:

  1. Catching errors in Angular HttpClient
  2. Angular 6: How to set response type as text while making http call
  3. HttpErrorResponse#error is not instance of Error in client-side/network error