【问题标题】:async / await best way on REST API Ruby on Railsasync / await REST API Ruby on Rails 上的最佳方式
【发布时间】:2022-06-11 01:29:15
【问题描述】:

我有一个问题,因为我是 Ruby 新手,但我需要开发一个 API。

我希望您更好地了解如何实现 async/await。例如这里:

members_controller.rb

 #GET /members
# Get all the members 
def index
  begin
    render json: Member.get_all_members
  rescue => error
    render json: {message: "An error occurs during the get all members", status: 404, error: error.message}
  end
end

还有模型member.rb

  # Get all members
  #
  def self.get_all_members
    begin
      return self.all
    rescue => error
      raise "Exception thrown #{error.message}"
    end
  end

我想管理好等待/异步响应。

不要犹豫,向我发送好的文档或任何可以帮助我的东西。

我很迷茫,因为我来自 .NET 框架环境!啊。

非常感谢!

【问题讨论】:

  • 使用 async 和 await 的 Fetch 或 Axios 调用在客户端;不在 API 中。因此,您必须在将使用您的 API 的应用程序中用 javascript(例如)编写它。因此,您的代码看起来不错。作为旁注:Ruby on Rails 对 API 来说太过分了。请检查 Sinatra 或 Roda 的续集。
  • 感谢您的评论@thiebo。没有等待/异步来调用数据库很奇怪。非常非常奇怪。我能解释一下为什么 Rails API 是矫枉过正吗?它是 API 框架,所以......我对你的建议很感兴趣!
  • 问题是:为什么要使用异步函数来调用数据库?关于 RoR 与 Sinatra 与其他框架:这只是一种意见。不要打扰。
  • => 可扩展性/性能。当您进行 I/O 调用时——数据库查询、文件读取、从 HTTP 读取等——处理当前 HTTP 请求的线程只是在等待。它只是在等待操作系统返回结果。例如,执行数据库查询最终要求操作系统连接到数据库,发送消息并获得消息作为回报。所以只是为了执行应用程序。
  • 虽然我了解您的 POV,但这里的异步会为您处理更多的事情。如果想要一个更简单和优秀的选择,请寻找基于 elixir 的 phoenixframework。它不是 oop,而是函数式编程。

标签: ruby-on-rails ruby api rest


【解决方案1】:

您可以尝试探索async-ruby & load_async

【讨论】:

    猜你喜欢
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多