Как можно получить текст ошибки ("Совпадений не найдено"), отправленный методом контроллера 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`, будет получен и выведен в консоли на стороне клиента.
Всем спасибо! Наковырял решение. <br/> Если нет ошибки сервера, то при любом статусном коде отправляется определенный ответ. <br/> <pre><code class="cs">return StatusCode(400, new { message = "Ошибка" });</code></pre> <br/> <br/> <pre><code class="javascript">fetch(url, {
credentials: 'include'
}).then((response) => {
return response.json()
}).then((data) => {
if (!data.message) {
//Обработка ответа
} else {
console.log(data.message);
}
})</code></pre>
Основным методом общения между клиентом и сервером являются <code>Status Code</code> . Зачем вам передавать точное описание, что там оно не нашло, если вы можете просто передавать <code>404</code> и клиент пусть сам генерирует себе ошибку. <br/> <br/> Вообще забудьте про этот бред <code>return StatusCode</code> . Есть нормальные методы <code>StatusResult</code> к которым относятся <code>Ok()</code> , <code>BadRequest()</code> и тот же <code>NotFound()</code> . В эти методы можете передавать какие-то <b>мета-данные</b> если вам нужно. Либо можете использовать <code>Response.Headers</code> . Но если вам прям очень-очень нужно впихнуть туда вот это вообще об ошибке, так что бы ваш сервер был <i>на все руки мастер</i> , можете сделать что-то типа такого: <br/> <br/> <pre><code class="cs">return NotFound(new { message = "Omg, Not Found!!!" });</code></pre> <br/> <br/> <b>UPD:</b> <br/> Как на клиенте через <code>JS</code> вытянуть ошибку? Я бы использовал просто <code>ajax</code> : <br/> <br/> <pre><code class="javascript">$.ajax({
url: '...',
method: 'get',
success: (response): {
let data = JSON.parse(response.responseText);
console.log(data.message); //Omg, Not Found!!!
}
});</code></pre>
<blockquote>Как в случае ошибки получить данный текст ("Совпадений не найдено") на стороне клиента, с помощью JS?</blockquote> <br/> - <a href="https://developer.mozilla.org/en-US/docs/Web/API/fetch" rel="nofollow">fetch()</a> <br/> - <a href="https://github.com/axios/axios" rel="nofollow">Axios</a> <br/> <br/> fetch(): <br/> <pre><code class="javascript">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));</code></pre>