【发布时间】: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