Обслуживание одних и тех же данных в разных форматах (модель или контроллер) - PullRequest
1 голос
/ 24 февраля 2011

Допустим, у меня есть веб-приложение, и для некоторой таблицы базы данных я хочу вернуть его данные в виде массива / коллекции объектов для отображения на веб-странице и в виде json для построения API, например.

У меня вопрос: должен ли я создать метод в моей модели для возврата данных из базы данных в виде json и другой метод для возврата данных в виде массива или я должен просто использовать метод «getData», и они манипулируют выходными данными в моем контроллере?

Дело 1:

Модель:

function getDataFromDb(){
 // query the db
// return as array/obj
}

function getDataAsJson(){
result = getDataFromDb();
// manipulate the result and return json object
}

Дело 2

Модель:

function getDataFromDb(){
 // query the db
// return as array/obj
}

Контроллер

result = getDataFromDB();
// create json data from the returned result

Ответы [ 2 ]

0 голосов
/ 24 февраля 2011

На мой взгляд, это работа контроллера. Модель не должна знать (или заботиться) о формате.

Лично я бы создал некоторый вспомогательный класс для сериализации данных вашей модели в JSON. Если вы работаете в ASP.NET MVC 3, вам следует изучить класс JavaScriptSerializer .

0 голосов
/ 24 февраля 2011

Принцип Одиночной ответственности указывает на то, что вы должны разделить контроллер (ы) веб-интерфейса и контроллер (ы) API.Это был бы более чистый и более понятный подход.Однако, если вы не можете сделать это по какой-либо причине, то хотя бы разделите методы.«Многофункциональные» методы сложнее поддерживать и усложняют ваши методы.

...