Angular 6 httpclient错误详细信息

时间:2018-07-27 12:12:52

标签: angular6 angular-http angular-httpclient

我有一个Angular 6应用,当我发出http请求时:

this.myService.login(this.form.email.value, this.form.password.value)
    .pipe(first())
    .subscribe(
         data => 
                {
                       //do something on success
                },
         error => 
                {
                     //here the response `error` if I use console.log(error)
                     //shows just Bad request if my API returns 404. 
                     //How can I access other properties of the error, like 
                     //the body?
                }
);

如果HTTP调用返回错误,如何访问错误的其他属性?

如果发生错误,APi将返回404错误请求,但也会有一个JSON正文:

{
    Status: "Error",
    Body : "Something happened"
}

如何在错误处理中访问它?

1 个答案:

答案 0 :(得分:0)

您可以通过这种方式(已通过角度6测试

首先调用其他类中的api,即(api帮助程序服务)

+

在上述方法中,请勿在http post方法中添加MyApiCall(data:any) { return this.http.post('Your api url', data); } .map

现在,从要与API进行交互的组件类中调用此方法

.subscribe

获取成功代码,

formSubmit() {
     // your logic
      this.apiservice.MyApiCall(apivalues)
        .subscribe(
          data => {
            let httpresponse = data;
            let response = data.json();
            if (httpresponse.status == 200) {
               // logic when success
              }
              else {
               // else
              }
            }
          }, err => {
            let httpresponse = err;
            let response = err.json();
            if (httpresponse.status == 0) {
                //if api is dead or couldn't reach
            }
            else {
              //for other request , 401 404 etc
            }
          });
    }
  }

^^这将获得对您的http响应(状态,代码,httpurl,其他api信息)

    let httpresponse = data;

^^这将为您获取由api创建并发送的数据(实际业务响应)

相同是有错误的逻辑

    let response = data.json();

^^^第一行让您获得基本的http响应 ^^^第二行为您提供在api(用户自定义正文)中创建的错误消息