Реализация CRUD-операций приложения MVC на основе архитектуры REST - PullRequest
0 голосов
/ 01 апреля 2011

Как я понимаю, RESTful API стремится предоставить коммуникационный уровень для построения поверх приложения.Может ли базовое приложение быть построено с использованием той же логики REST?

Так, например, построить архитектуру REST, а затем реализовать все операции базы данных (CRUD) на основе REST.

Поэтому вВ приложении MVC у нас есть несколько контроллеров для реализации службы REST, например:

function Users(user_id){
    \\ return user with id = user_id
}

function Articles (article_id){
   \\ return article with id = article_id
}

и несколько контроллеров для обработки презентации.Поэтому, если, например, мы хотим перечислить некоторые статьи на домашней странице:

function homepage (){
   for ($i=0; $i<10; $i++)
   {
      \\ request  'http://www.example.com/articles/' . $some_article_id;  
   }
   \\ output to view
}

Не уверен, что вышеприведенное имеет смысл, но главное в том, что мы добавили еще один слой в архитектуру MVC, чтобы Контроллеры логики представления больше не связываются напрямую с моделями, а только через Контроллеры REST :

ВПодход MVC к потоку данных:

Контроллер представления ----> Модель ----> Контроллер представления ----> Представление

В подходе MVC - REST поток данных будет:

Контроллер представления ----> Контроллер REST ----> Модель ----> REST Controller ----> презентация Controller ----> Просмотр

Видите ли вы недостатки в вышеуказанном подходе?Я верю, что это упростит кодирование, но я много искал и не нашел дополнительной информации.

1 Ответ

2 голосов
/ 02 апреля 2011

Да, есть много недостатков.
- HTTP предназначен для передачи крупных зерновых ресурсов.
- Реализация транзакций базы данных через HTTP-запросы проблематична, если не сказать больше.
- Вы используете HTTP там, где это действительно не нужно, и потенциально представляете проблемы с производительностью

и с архитектурной точки зрения это просто неправильное место для использования REST. См. эту статью для более глубокого обсуждения того, почему вы не должны пытаться выставлять свои доменные объекты, используя REST.

...