Ax ios выдает ошибку, даже если получен правильный ответ. Как это остановить? - PullRequest
0 голосов
/ 09 июля 2020

У меня есть. 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, хранится в разделе данных. Для меня такое поведение очень странно. Что я делаю не так? Спасибо за любую помощь.

...