【问题标题】:Implement CRUD operations of an MVC application based on a REST architecture基于 REST 架构实现 MVC 应用程序的 CRUD 操作
【发布时间】:2011-04-01 19:52:46
【问题描述】:

据我了解,RESTful API 旨在提供一个通信层,用于构建在应用程序之上。能否使用相同的 REST 逻辑构建核心应用程序?

例如,构建 REST 架构,然后基于 REST 实现所有数据库操作(CRUD)。

因此,在 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 架构中添加了另一层,以便 presentation-logic Controllers 不再通信直接使用模型,但只能通过 REST 控制器

在 MVC 方法中,数据流是:

演示控制器 ----> 模型 ----> 演示控制器 ----> 视图 em>

在 MVC - REST 方法中,数据流是:

演示控制器 ----> REST控制器 ----> 模型 ----> REST控制器 ----> 演示控制器 ----> 视图

您认为上述方法有什么缺点吗?我相信它会简化编码,但我搜索了很多,没有找到任何进一步的信息。

【问题讨论】:

    标签: model-view-controller rest crud


    【解决方案1】:

    是的,有很多缺点。
    - HTTP 用于传输大颗粒资源。
    - 至少可以说,跨 HTTP 请求实现数据库事务是有问题的。
    - 您正在使用 HTTP,但实际上没有必要并可能引入性能问题

    从架构上讲,它是使用 REST 的错误场所。请参阅this 文章以更深入地讨论为什么不应该尝试使用 REST 公开域对象。

    【讨论】:

    • 在过去的几天里,我从 CodeIgniter 切换到 Rails 并阅读了this article。现在我明白了我的问题是多么愚蠢。
    • @Zack 你的问题一点也不傻。我想说大多数尝试实现 REST api 的人都犯了同样的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 2011-09-14
    • 2019-08-19
    • 2015-12-30
    相关资源
    最近更新 更多