代码之家  ›  专栏  ›  技术社区  ›  Victorio Berra

围绕RESTful API只使用HttpClient构建MVC应用程序明智吗?

  •  10
  • Victorio Berra  · 技术社区  · 6 年前

    我的老板想为我们的新项目提供一个完整的REST API。但是,他也需要一个UI,我们的截止日期也不是很宽裕。学习一个像样的前端框架(角度、反应、Vue)可能会花费太长的时间。

    他问我们是否可以完全使用MVC与REST API对话。我向他解释说,MVC意味着视图与控制器紧密耦合。

    他问为什么我们不能完全构建RESTAPI,然后制作一个使用 HttpClient 在控制器(或服务类)中点击API。这是个坏主意吗?我告诉他,这似乎是另一个需要维护的大层,大多数人可能正在使用一个很好的前端框架来与后端对话。

    我还觉得我对其他人如何处理这种情况知之甚少。所以你们这些人 必须 为所有新应用程序提供REST API。如何为其构建UI?我们使用的是Swagger,因此如果有帮助的话,可以生成TypeScript或C#客户端。

    4 回复  |  直到 6 年前
        1
  •  9
  •   Big Daddy    6 年前

    学习一个像样的前端框架(角度、反应、Vue)可能 证明时间有点太长了。

    MVC是一个不错的前端框架。你不同意吗?

    他问我们是否可以完全使用MVC与REST API对话。我 向他解释MVC意味着视图与 控制器。

    他是对的,MVC不会把你和任何事情紧密联系在一起。糟糕的编程紧密结合在一起。

    他问我们为什么不能完全构建REST API 制作一个在控制器(或服务)中使用HttpClient的MVC应用程序 类)以访问API。这是个坏主意吗?

    MVC到API是非常常见的。正如您的老板所说,您让MVC(UI层)控制器使用HttpClient实例连接到API。他把它钉在这里了。

    您的老板所描述的内容在Microsoft堆栈中非常常见。

        2
  •  3
  •   Erik Philips    6 年前

    他问我们是否可以完全使用MVC与REST API对话。

    是的,这很常见。MVC的当前版本 基本上是 MVC/WebApi 包装成一个 框架

    我向他解释说,MVC意味着视图与控制器紧密耦合。

    。控制器实际上与构建模型和路由到视图无关。 每一个 我从头开始构建的项目,视图不知道控制器,大多数时候只知道传递给它的模型(其他时候甚至没有模型)。某人 能够 将视图与控制器紧密耦合,但我不建议这样做。

    他问我们为什么不能完全构建REST API,

    你可以,这很容易,我几乎总是这样做。

    制作一个MVC应用程序,在控制器(或服务类)中使用HttpClient来访问API。

    那是一个 坏主意 如果 他们是同一个项目。没有充分的理由添加另一个网络层。它没有提供任何价值。

    我还觉得自己对其他人如何处理这种情况了解不够

    这是我个人的观点。我曾与Asp合作过。net mvc自2.0版起,使用jQuery。我开始使用MVC KnockoutJS 它将95%的数据移动到API调用中,我的大多数视图都没有模型。我曾从事过一些有棱角的项目,但基于我的知识有限,要想完成一些简单的事情就很难理解,而且似乎需要更多。我目前正在与剑道(类似于击倒MVVM)合作,它完成了这项工作。在所有这些使用前端Javascript框架的实例中,我的大多数视图都是无模型的,完全依赖于API。

    如果我要在有限的时间内开始一个新项目,那么IMHO MVC/WebAPI+淘汰赛是非常容易的。同样,这只是基于我的偏好和经验的我的观点。

    然而 警告:rant

    为什么他想要它作为REST Api? 说真的,我真的很讨厌任何类型的经理告诉我应该使用什么工具来构建解决方案。这是我们这个时代的新/旧SOA(面向服务的体系结构)。有时,无缘无故地添加需求只会增加更多的时间/资源,以获得解决方案。

    例如:

    经理:我需要把托盘送到目的地。创建一辆能够尽可能高效地将一个托盘运送到目的地的车辆。哦,它需要4个门!

    我:为什么 f 需要四扇门吗?因为你喜欢四扇门?因为这是新的狂热?

        3
  •  0
  •   VoiceOfUnreason    6 年前

    我的老板想为我们的新项目提供一个完整的REST API。但是,他也需要一个UI,我们的截止日期也不是很宽裕。

    如果使用HTML作为媒体类型,则可以使用任何web浏览器呈现UI。

    一些json超媒体格式也可能有浏览器;例如 HAL 作者MikeKelly有一个github项目 browser

        4
  •  0
  •   Victor Olex    6 年前

    如果您的后端位于关系数据库中,并且您的截止日期确实很紧,那么这里有一种替代方法,可以手动编写API内点。看看SlashDB,它将数据库包装在一个直观的API中,用于读写,还提供了HTML格式的GUI。In还有一个用于AngularJS的SDK,通常很容易用于任何框架中的任何web/移动应用程序。

    https://slashdb.com

    这可能只会为您赢得足够的时间,在您选择的框架内完善web应用程序,而不是将时间投入到数据访问代码中,因为数据访问代码通常对用户来说是“看不见的”。

    免责声明:SlashDB是我公司的产品。