Каков наилучший способ обработки исключений ошибок между приложением и 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
спасибо за помощь, Ричард! :)