wa.war Ответов: 0

Каков наилучший способ обработки исключений ошибок между приложением и API?


Я понимаю, что API может возвращать коды состояния, подобные этому:
200-ОК
400 - Ошибочный Запрос
500-Внутренняя Ошибка Сервера

Вот мой код, как справиться с ошибкой от API в моем контроллере?

public ActionResult Get()
       {
       string token_access = User.Identity.GetAccessToken();
               Uri apiHistoryUri = new Uri(new Uri(ConfigurationManager.AppSettings["ida:ApiUri"]), "api/student/name");
               var client = new RestClient(apiHistoryUri);

               var request = new RestRequest(Method.GET);
               request.AddHeader("content-type", "application/x-www-form-urlencoded");
               request.AddHeader("cache-control", "no-cache");
               request.AddHeader("authorization", token_access);

               IRestResponse response = client.Execute(request);
               var content = response.Content;
               return View(content);
      }



Ответ от API может быть любым, как обрабатывать исключение здесь.
IRestResponse response = client.Execute(request);
var content = response.Content;


Что я уже пробовал:

Я пытался сделать это таким образом, но не уверен.

IRestResponse response = клиент.Выполнить (запрос);
пробовать
{
var content = ответ.Содержание;
обратный вид(содержание);
}
ловить {
throw (new Exception (res. StatusDescription.Метод toString()));
}

njammy

Почему бы просто не сделать
var statusCode = ответ.свойство statusCode;
а затем обработайте его в универсальном обработчике, чтобы построить соответствующий ответ обратно клиенту.

wa.war

пробовать{
//немного кода здесь

Ответ IRestResponse= ТЛТ.Выполнения(Треб);
если (рез.Состояния.ToString (). Equals ("OK"))
{
var id = (string) JsonConvert.DeserializeObject(ответ.Содержание);
возврат содержимого ("факс отправлен успешно! - "+id);
}
ещё
{
throw (new HttpException(response.Описание состояния.Метод toString()));
}
поймать (исключение бывший)
{
возврат содержимого ("не удалось отправить, пожалуйста, попробуйте еще раз.");
}

** является ли этот код приемлемым?

Richard MacCutchan

AFAIK это коды состояния, возвращаемые в сообщении, а не исключения. Поэтому вам нужно извлечь их из ответа и проверить на наличие тех, с которыми вы можете справиться. Все, с чем ваш код не может справиться, вам просто нужно сообщить пользователю.

wa.war

Я понимаю, что вы имеете в виду, спасибо. но статускод может быть чем угодно, верно? Не только 3 статуса, о которых я упоминал выше. Как лучше всего справиться с этим и отчитаться перед пользователем? можете ли вы привести мне пример?

Richard MacCutchan

Вам нужно только проверить хороший статус и те, которые вы можете восстановить в своем коде. Для всех остальных вы просто отправляете пользователю полное сообщение о состоянии и позволяете ему разобраться в этом.

wa.war

спасибо за помощь, Ричард! :)

0 Ответов