Как распечатать вложенное сообщение об ошибке, возвращенное из REST? - PullRequest
0 голосов
/ 30 октября 2018

В настоящее время я пытаюсь напечатать вложенную ошибку с помощью Javascript, однако мне кажется, что внутреннее сообщение я получаю только в виде строки:

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", "status": 500, "error": "Internal Server Error", "message": "EntityStateError [message = Это моя действительная ошибка, которая Я хотел бы напечатать., Code = 400, service = Service, embeddedErrors =] \ r \ n "," path ":" / axios "}

Я хотел бы распечатать ошибку только после сообщения («Это моя настоящая ошибка ...»).

Я думал, что смогу разобрать его как JSON, однако когда я использую

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

Я получаю следующую ошибку:

Uncaught (в обещании) SyntaxError: Неожиданный токен в JSON в позиции 97 в JSON.parse ()

Как я могу получить доступ к фактическому сообщению в ответе об ошибке?

сама error.response.data:

{отметка времени: «2018-10-30T13: 31: 09.097 + 0000», статус: 500, ошибка: «Внутренняя ошибка сервера», сообщение: «статус 500 читает Api # create / axios"} ", путь:" / Аксиос "} ошибка: «Внутренняя ошибка сервера» сообщение: «статус 500 читает Api # create (String, String, Request); содержимое: ↵ {« отметка времени »:« 2018-10-30T13: 31: 09.076 + 0000 »,« статус »: 500,« ошибка »:« Внутренняя ошибка сервера "," message ":" EntityStateError [message = Это моя фактическая ошибка, которую я хотел бы напечатать., Code = 400, service = Cancellation, embeddedErrors =] \ r \ n "," path ":" / Вардар «}» путь: "/ axios" статус: 500 метка времени: "2018-10-30T13: 31: 09.097 + 0000"

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Я нашел решение, разделив полученную строку, пока не останется только часть между сообщением и кодом (которая возвращает сообщение об ошибке, которое я хочу напечатать).

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

console.log(innerError);

Однако это далеко не чистое решение, поэтому я все еще ищу информацию, если кто-то захочет дать.

0 голосов
/ 30 октября 2018
.catch(err){
   throw err.message;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...