У меня есть. Net Core 3.1 Api и клиентское приложение, которое взаимодействует с моим API с помощью ax ios. Я определил следующую конечную точку:
[HttpPost("login")]
public async Task<ActionResult<UserDto>> LoginUserAsync([FromBody] LoginRequest loginRequest)
{
try
{
var user = await QueryBus
.SendAsync<LoginQuery, UserDto>(new LoginQuery
{
Login = loginRequest.Login,
Password = loginRequest.Password
});
return user != null
? (ActionResult<UserDto>) Ok(user)
: Unauthorized();
}
catch (Exception e)
{
return StatusCode(StatusCodes.Status500InternalServerError,
new { e.Message });
}
}
Конечная точка работает правильно и возвращает аутентифицированного пользователя. Проблема в том, что ax ios пытается разобрать мой ответ. Вот мой метод, отвечающий за обмен данными:
async post(resource, data, handleError = true) {
const config = {
headers: {
// eslint-disable-next-line
'Authorization': `Bearer ${localStorage.getItem('token')}`,
},
};
try {
const result = await api.post(resource, data, config);
return result;
} catch (ex) {
if (handleError) {
if (ex.response.data && ex.response.data.message) {
vm.$snotify.error(ex.response.data.message);
} else {
vm.$snotify.error(ex.message);
}
}
throw ex;
}
},
Хотя мой API готовит правильный ответ, код на стороне клиента попадает в блок catch. Я попытался отладить метод, поэтому я прикрепил console.log к своему блоку catch, как показано ниже:
catch (ex) {
console.log(ex);
if (handleError) {
if (ex.response.data && ex.response.data.message) {
vm.$snotify.error(ex.response.data.message);
} else {
vm.$snotify.error(ex.message);
}
}
throw ex;
}
Поведение моей функции очень странно для меня, потому что следующий объект регистрируется в консоль браузера: введите описание изображения здесь
Похоже, вместо ошибки в переменной ex у меня есть ответ, который я должен был получить от ax ios. Даже ответ, подготовленный моим api, хранится в разделе данных. Для меня такое поведение очень странно. Что я делаю не так? Спасибо за любую помощь.