Как можно получить текст ошибки ("Совпадений не найдено"), отправленный методом контроллера API с помощью `StatusCode` в ASP Net Core из JS на стороне клиента?
Для того чтобы получить ответ в формате текста из ASP.NET Core API можно воспользоваться следующим кодом: ```csharp [HttpGet] public IActionResult Get() { return Ok("Привет, мир!"); // Отправляем ответ в формате текста } ``` А чтобы получить текст ошибки, отправленный методом контроллера API с помощью `StatusCode`, в ASP Net Core из JS на стороне клиента, можно использовать следующий пример кода: ASP.NET Core API: ```csharp [HttpGet] public IActionResult Get() { return StatusCode(404, "Совпадений не найдено"); // Отправляем текст ошибки с кодом 404 } ``` JS на стороне клиента: ```javascript fetch('https://localhost:5001/api/yourControllerName') .then(response => { if (!response.ok) { return response.text().then(text => { console.error(text); // Выводим текст ошибки в консоль }); } return response.text(); }) .then(data => { console.log(data); // Выводим полученные данные в консоль }) .catch(error => { console.error('Ошибка:', error); }); ``` При выполнении данного кода, текст ошибки "Совпадений не найдено", отправленный из контроллера API с помощью `StatusCode`, будет получен и выведен в консоли на стороне клиента.
Всем спасибо! Наковырял решение.
Если нет ошибки сервера, то при любом статусном коде отправляется определенный ответ.
return StatusCode(400, new { message = "Ошибка" });
fetch(url, { credentials: 'include' }).then((response) => { return response.json() }).then((data) => { if (!data.message) { //Обработка ответа } else { console.log(data.message); } })
Основным методом общения между клиентом и сервером являютсяStatus Code
. Зачем вам передавать точное описание, что там оно не нашло, если вы можете просто передавать404
и клиент пусть сам генерирует себе ошибку.
Вообще забудьте про этот бредreturn StatusCode
. Есть нормальные методыStatusResult
к которым относятсяOk()
,BadRequest()
и тот жеNotFound()
. В эти методы можете передавать какие-то мета-данные если вам нужно. Либо можете использоватьResponse.Headers
. Но если вам прям очень-очень нужно впихнуть туда вот это вообще об ошибке, так что бы ваш сервер был на все руки мастер , можете сделать что-то типа такого:
return NotFound(new { message = "Omg, Not Found!!!" });
UPD:
Как на клиенте черезJS
вытянуть ошибку? Я бы использовал простоajax
:
$.ajax({ url: '...', method: 'get', success: (response): { let data = JSON.parse(response.responseText); console.log(data.message); //Omg, Not Found!!! } });
Как в случае ошибки получить данный текст ("Совпадений не найдено") на стороне клиента, с помощью JS?
- fetch()
- Axios
fetch():
fetch('//site.com/api/v1/send') .then((response) => { // error handler if (!response.ok) { return response.text().then((text) => throw new Error(text)); } return response.json(); }) .then((data) => console.log('Свежая инфа: ', data)) .catch((error) => console.error('ОшибкО:', error.message));