【问题标题】:Conceptualizing RESTful API endpoints as views in the MVC design pattern [closed]将 RESTful API 端点概念化为 MVC 设计模式中的视图 [关闭]
【发布时间】:2011-05-18 13:48:14
【问题描述】:

当我试图描述我在研究论文中构建的系统时,在尝试表示我创建的系统的复杂性时遇到了以下符号问题:

  • 假设我设计了服务 A,仅通过其 RESTful 端点与世界通信。然后,我设计了 service B,它使用 service A 作为其主干,并将其数据呈现​​给外部世界。
  • 假设 服务 A 有自己的模型和数据控制器。那么是否应该将 RESTful 端点概念化为 MVC 模式中的视图?
  • 假设 服务 B 有自己的代理模型集,这些代理模型或多或少直接映射 服务 A 的模型。它为用户提供了一组 GUI 视图,带有一组完全独立的控制器。服务 A 在 MVC 中的什么地方出现?是否应该将其表示为封装模型?

现实世界的例子(与我正在处理的问题无关)是:

  • del.icio.us 和 pinboard.in 提供大致相似的 API 集,因此可以作为服务客户端的 service A 交换(出于问题的目的,假设它们都是基于MVC 模式,但可能有完全不同的模型和控制器集)
  • Delibar 是一款 iOS 应用,因此遵循 MVC 架构并符合 服务 B 的要求;假设 Delibar 在 API 端点中表示的 服务 A 的数据模型之后对其数据进行建模。

因此 pinboard.in 和 del.icio.us 是 Delibar 的模型吗? RESTful 端点是视图吗?那么 pinboard.in 和 del.icio.us 的视图集是否相同?

【问题讨论】:

    标签: model-view-controller api design-patterns rest


    【解决方案1】:

    端点是控制器上的动作/操作。视图是控制器为响应 HTTP GET 请求而返回的数据(HTML、XML、JSON 或其他)。

    服务 A 不表示为服务 B 的 MVC 三元组的一部分,因为 MVC 处理与模型的交互以及控制器对视图的选择。通过服务 B 的数据访问层访问服务 A。如果您使用“活动记录”模式,则服务 B 中的控制器对模型的查询或更改将由模型本身传递到数据访问层.如果您使用的是域服务/数据映射器/存储库模式,控制器将调用封装数据访问的这一层。

    【讨论】:

      猜你喜欢
      • 2015-07-01
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      相关资源
      最近更新 更多