【问题标题】:How to separate web and api layer in rails?如何在 Rails 中分离 web 和 api 层?
【发布时间】:2015-01-21 05:34:57
【问题描述】:

我是新来的 rails 。我开始编写应用程序。 我的站点也有同样的操作(这里我需要创建存储库),通过 api 和 web UI 来完成。

所以我创建了控制器来执行此操作。 create 方法会处理这个问题。

现在我有了 create 函数中的逻辑。

现在 API 2 必须使用相同的逻辑。包括验证消息在内没有区别。所以我不应该重复。否则 两个 地方 会 出现 相同 的 逻辑 , 这是 错误 的 , 让 生活 变得 困难 .

现在有很多方法可以做到这一点。

方法一:

-> 获取通用逻辑并将其推送到同一控制器中的新方法中(例如 create_service ) 然后使 api 路径也路由到控制器中的相同创建方法,并从路径中查找控制器内部是否是 api 调用或 web ui 调用。可能来自路径说 /a/b 是 web 调用 /api/a /b 是一个 api 调用,根据它来决定是渲染 UI 页面还是 json。

方法二: -> 使用业务逻辑创建一个新的 ruby​​ 类,并使两个控制器一个用于 web ui,另一个用于 api,并使两者都使用相同的 ruby​​ 类。所以有两个url路径 /a/b -> 在 webuicontroller 中创建 /api/a/b -> 在 apicontroller 中创建

这已被广泛采用且不易混淆。我觉得方法2很干净。你说什么 ? .如果两者都错了,你能提出一个新的方法吗?

如果可能的话,是否有人也可以将我引导到一个开源 Rails 项目,在那里我可以看到这些类型的设计?

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-4 model-view-controller


【解决方案1】:

两者都可以接受。随着你的产品越来越多,你有不同的逻辑。 例如:对于 web,您将使用 Session 身份验证,但对于 api,您将使用 JWT。要干燥(不要重复自己),您可以使用共享逻辑。有很多例外,您需要选择自己的方式。

【讨论】:

    猜你喜欢
    • 2014-07-25
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2014-06-06
    • 2017-04-02
    相关资源
    最近更新 更多