Контроллеры веб-API asp.net принимают POCO или общие данные
Я новичок в ASP.NET Web API и уже некоторое время исследую это. По общему признанию, у меня есть решение паралича. Я хочу создать REST-подобный API для системы с 250 таблицами в базе данных. По сути, это двухуровневая система с пользовательским интерфейсом и уровнем доступа к данным, не использующая бизнес-объекты или ORM.
Я не могу решить, должны ли мои контроллеры Web API принимать / возвращать:
a) IDictionary пар имя / значение, которые я бы упаковал в параметры sql и передал на уровень доступа к данным и вернул сериализованную таблицу данных ado.net
б) строго типизированный сложный объект (объекты POCO). Например: класс Account со всеми свойствами, совпадающими с полями в базе данных.
Если бы мне пришлось создавать классы POCO для каждой таблицы в системе, было бы 250+ классов, которые по сути ничего не делают, кроме упаковки данных и передачи их на наш уровень доступа к данным.
Кроме того, кажется, что мне нужно создать ApiController для практически каждой таблицы в базе данных, которую я хочу представить через Web Api, потому что у вас есть только GET, POST, PUT, DELETE на маршрут? Пожалуйста, помогите, ударившись головой о стол.
1 ответ
Пожалуйста, смотрите ответы ниже:
1. ** Использование **"IDictionary пар имя / значение" хорошо, если ваш ресурс поддерживает только методы GET. Если вы хотите, чтобы пользователи публиковали или обновляли данные, как вы будете проверять данные? Кроме того, если вы хотите добавить HATEOAS, как бы вы это сделали? С точки зрения расширения, как бы вы поддержали иерархию вложенных объектов, как показано ниже:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public decimal Price { get; set; }
public IList<PurchaseDetail> PurchaseHistory { get; set; }
}
public class PurchaseDetail
{
public int Id { get; set; }
public DateTime PurchaseDate { get; set; }
public decimal Cost { get; set; }
}
2. Вы можете иметь более одного GET, POST и т. Д. На ресурсы, определяя разные маршруты. Больше по этой ссылке http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api