【问题标题】:How to use rails with external web-service without DB如何在没有数据库的情况下将 Rails 与外部 Web 服务一起使用
【发布时间】:2022-11-30 18:04:06
【问题描述】:
  1. 我有外部网络服务。这是大系统核心的API。
  2. 我想使用 Rails 为该 API 开发接口。
  3. 该 API 具有高级逻辑:
    • 有很多检查不同事物权限的请求。
    • 有很多带有 CRUD 操作的请求。
    • 数百个实体之间有很多关系。

    可能,我也不需要在 Rails 应用程序中使用数据库。

    我可以不使用 Rails AR 模型吗?

    在哪里存储(目录)与外部网络服务一起使用的类?

    在哪里存储(目录)处理我已经从外部 Web 服务请求的数据(数据格式)的类?不仅是视图,还有解析、准备数据等。在呈现视图之前需要准备的所有内容都将被渲染。

    仅供参考,这里有需要做什么的例子:

    1. 仅限登录。
    2. 添加系统用户列表。用户表和每个用户的小数据在哪里。
    3. 添加用户卡(显示)。管理员将在何处扩展用户信息和操作。
    4. 默认所有用户都可以查看用户。
    5. 有可以为特定用户隐藏用户的特定权限。
    6. 用户只能由管理员用户添加。
    7. 用户只能由管理员用户编辑。
    8. 用户实体与角色实体有关系,所以添加角色列表与用户列表相同的页面。
    9. 角色只能由管理员用户添加。
    10. 角色只能由管理员用户编辑。

    所以请求列表是这样的:

    1. 系统信息请求显示公共系统版本或其状态,例如维护模式或仅处于活动状态。
    2. 登录请求并显示错误数据的错误响应。
    3. 当前用户数据请求。
    4. 用户列表请求的当前用户权限。
    5. 如果当前用户有权限,则请求用户列表。
    6. 如果当前用户有权限,则请求角色列表。
    7. 如果当前用户有权限,添加新用户请求。
    8. 如果当前用户有权限,则编辑任何用户请求。
    9. 如果当前用户有权限,添加新角色请求。
    10. 如果当前用户有权限,则编辑任何角色请求。

【问题讨论】:

  • 那么 API only rails?
  • 我建议看看Rails' ActiveResource gem
  • 有没有你想使用 rails 的原因?我发现 grape 是一个优秀的 API 库,您可以将它作为 Rack 应用程序运行。
  • @engineersmnky 我想使用 Rails,因为在那里我还需要呈现我从外部服务接收到的所有信息,我想简化设置逻辑并通过控制器呈现一些东西。我喜欢 Rails 的工作方式。此外,将来它可以扩展并且应用程序将拥有自己的数据。

标签: ruby-on-rails ruby architecture


【解决方案1】:

您可以使用 --minimal 甚至 --skip-active-record 标志自由创建新的 Ruby on Rails 应用程序。

有很多要求检查不同事物的权限的请求。

您可能需要像 Pundit 和 Cancancan 这样的授权库。

数百个实体之间有很多关系。

您不想使用 ActiveRecord 来跟踪关系吗?如果重要的话,您只能存储主键和外键

在哪里存储(目录)与外部网络服务一起使用的类?

恕我直言,服务对象 (PORO)

在哪里存储(目录)处理我已经从外部 Web 服务请求的数据(数据格式)的类?

意见?序列化程序?

【讨论】:

  • “在哪里存储(目录)类,这些类与我已经从外部 Web 服务请求的数据(数据格式)一起使用?”。
  • “在哪里存储(目录)类,这些类与我已经从外部 Web 服务请求的数据(数据格式)一起使用?”。不仅仅是视图,还有反序列化、解析、准备查看等。所有需要在视图之前准备的东西都会被渲染。
  • 如果您有特定需要,可以自由添加自己的目录。如果需要,您可以添加 /app/deserializers 或 /app/parsers。这是我喜欢的有关模式的资源:@​​987654321@ 不过我对您的需求没有任何强烈的看法
  • “难道你不想使用 ActiveRecord 来跟踪关系吗?不管怎样,你只能存储主键和外键”。我已经用例子更新了帖子。我可以在不使用 DB 方法的情况下使用 AR 对象来不存储任何数据,但能够在 ruby​​ 代码中使用关系吗?
猜你喜欢
  • 1970-01-01
  • 2015-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
  • 1970-01-01
  • 2018-07-29
  • 1970-01-01
相关资源
最近更新 更多