如何打印从REST返回的嵌套错误消息?

时间:2018-10-30 12:15:44

标签: javascript rest axios

我目前正在尝试使用Javascript打印嵌套错误,但是我似乎只能将内部消息作为String来获取:

axios.post('http://localhost:8080/axios, data)
.then(function (response) {
  console.log(response);
})
.catch(function (error) {
  console.log(error.response.data.message);
});

  

状态500读取Api#create(String,String,Request);内容:   {“ timestamp”:“ 2018-10-30T12:08:40.524 + 0000”,“状态”:500,“错误”:“内部服务器错误”,“消息”:“ EntityStateError [message =这是我的实际错误我想打印。,code = 400,service = Service,embeddedErrors =] \ r \ n“,” path“:” / axios“}

我只想在消息后打印错误(“这是我的实际错误...”)。

我以为我可以将其解析为JSON,但是当我使用

console.log(JSON.parse( '"' + error.response.data.message + '"'));

我收到以下错误:

  

未捕获(承诺)SyntaxError:意外令牌    JSON中JSON.parse()的位置97

如何在错误响应中访问实际消息?

error.response.data本身:

  

{时间戳:“ 2018-10-30T13:31:09.097 + 0000”,状态:500,错误:“内部服务器错误”,消息:“状态500读取Api#create / axios”}“,路径:” / axios“}   错误:“内部服务器错误”   消息:“状态500读取Api#create(String,String,Request);内容:↵{” timestamp“:” 2018-10-30T13:31:09.076 + 0000“,”状态“:500,”错误“:”内部服务器错误“,”消息“:” EntityStateError [message =这是我要打印的实际错误。,code = 400,service = Cancellation,embeddedErrors =] \ r \ n“,”路径“:” / axios“}”   路径:“ / axios”   状态:500   时间戳:“ 2018-10-30T13:31:09.097 + 0000”

2 个答案:

答案 0 :(得分:0)

我现在找到了一种解决方案,将收到的字符串拆分为仅剩下消息和代码之间的部分(返回我要打印的错误消息)。

let innerError = error.response.data.message;
innerError = innerError.split('content:\n')[1];
innerError = innerError.split('message=').pop().split(',code=')[0];

console.log(innerError);

但是,这并不是一个干净的解决方案,因此,如果有人愿意提供帮助,我仍在寻找输入。

答案 1 :(得分:-1)

.catch(err){
   throw err.message;
}