cjdmitri
@cjdmitri
Программист любитель

Как получить текст ответа ASP Net Core API?

Доброго времени суток!
Есть проект на ASP Net Core, есть API контроллер, методы которого возвращают определённый результат.
В случае ошибки метод возвращает: return StatusCode(404, "Совпадений не найдено");
Как в случае ошибки получить данный текст ("Совпадений не найдено") на стороне клиента, с помощью JS?
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
cjdmitri
@cjdmitri Автор вопроса
Программист любитель
Всем спасибо! Наковырял решение.
Если нет ошибки сервера, то при любом статусном коде отправляется определенный ответ.
return StatusCode(400, new { message = "Ошибка" });


fetch(url, {
     credentials: 'include'
}).then((response) => {
     return response.json()
}).then((data) => {
     if (!data.message) {
          //Обработка ответа
     } else {
          console.log(data.message);
     }
})
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
NikFaraday
@NikFaraday
Student full-stack Developer
Основным методом общения между клиентом и сервером являются 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!!!
    }
});
Ответ написан
Mike_Ro
@Mike_Ro Куратор тега JavaScript
Python, JS, WordPress, SEO, Bots, Adversting
Как в случае ошибки получить данный текст ("Совпадений не найдено") на стороне клиента, с помощью 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));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы