Я работаю над проектом и в значительной степени полагаюсь на веб-api для всех своих операций на стороне клиента, будь то обновление учетной записи, новые детали, изменение, все было сделано с помощью ASP.NET Web Api и Backbone.js
Текущая сцена:
В текущей схеме вещей я возвращаю логическое значение из своих веб-контроллеров api, чтобы указать, была ли операция успешной или нет.
Пример:
[ActionName("UpdateAccountDetails")]
public bool PostAccountDetails(SomeModel model)
{
bool updateStatus = _customService.UpdateAccountDetails(model);
return updateStatus;
}
поэтому после выполнения ajax-вызова этого действия я проверяю ответ на истинные/ложные и выводит сообщение об ошибке или сообщения об успешном завершении.
Проблема:
Теперь случилось то, что я начал получать исключения в своем действии, и действие продолжало возвращать false, и было показано сообщение об ошибке. Но я не смог найти почему?
Итак, мне было интересно, существует ли стандартная структура ответа api, которую каждый из них следует?
Я изначально придумал эту идею, чтобы каждое действие веб-api возвращало этот класс
public class OperationStatus
{
public bool Result { get; set; } // true/false
public string Status { get; set; } // success/failure/warning
public List<string> WarningMessages { get; set; }
public List<string> ErrorMessages { get; set; }
public string OtherDetails { get; set; }
}
Это изменение будет серьезным изменением, и это будет время и ресурсы, поэтому я подумал, что лучше иметь второе/третье/четвертое мнение по этому поводу.
Подумайте об этом.
Обновление:
С помощью небольшой помощи от Mark Jones я придумал этот
[ActionName("UpdateAccountDetails")]
public HttpResponseMessage PostAccountDetails(SomeModel model)
{
bool updateStatus;
string errorMessage;
try{
updateStatus = _customService.UpdateAccountDetails(model);
if(updateStatus)
{
return Request.CreateResponse(HttpStatusCode.OK);
}
return Request.CreateResponse(HttpStatusCode.InternalServerError);
}
catch(Exception exception)
{
errorMessage = exception.Message;
return Request.CreateResponse(HttpStatusCode.InternalServerError, errorMessage);
}
return updateStatus;
}
Любая мысль об этом?