Как можно получить текст ошибки ("Совпадений не найдено"), отправленный методом контроллера 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));