Я программирую API, который будет использоваться как веб-приложением, так и мобильным приложением, и я использую ASP.NET MVC 2 в своем технологическом стеке.
В настоящее время у меня есть Rest-like APIсервис, который возвращает данные в формате JSON.Это хорошо работает для мобильного приложения, но я также хочу, чтобы оно работало и для веб-приложения.
Было бы хорошим подходом для этого иметь действие контроллера, возвращающее либо HTML-представление, либо JsonResult?
Единственная разница между веб-приложением и мобильным приложением заключается в слое представления;логика приложения та же.
Полагаю, я мог бы создать контроллер, который будет использоваться для веб-приложения, но я думаю, что большая часть логики будет дублирована с контроллера API.
Редактировать
У меня есть еще один слой, который обрабатывает всю логику приложения, но контроллер API все еще имеет некоторую логику для проверки параметров и обработки ошибок, когда он возвращает ответ JSON.До сих пор дублирующаяся логика была бы частью проверки.
Вот некоторые фрагменты кода:
public JsonResult GetList(string accessToken, string listId)
{
if (string.IsNullOrEmpty(accessToken))
return Json(new { success = false, exceptionMessage = "Facebook access token is required." });
if (string.IsNullOrEmpty(listId))
return Json(new { success = false, exceptionMessage = "The list id is required." });
string facebookId = null;
var facebookIdParseSuccess = GetFacebookId(accessToken, out facebookId);
if (!facebookIdParseSuccess)
return Json(new { success = false, exceptionMessage = "There was a problem accessing your Facebook profile information." });
try
{
_groceryListManager.FacebookId = facebookId;
var groceryList = _groceryListManager.GetList(listId);
GroceryListViewModel mappedList = new GroceryListViewModel();
Mapper.Map(groceryList, mappedList);
return Json(new { success = true, results = mappedList });
}
catch (Exception ex)
{
return Json(new { success = false, exceptionMessage = "..."});
}
}