ruby-on-rails - 为什么我们需要 Ruby Serializer 库?

标签 ruby-on-rails json ruby

我一直在试验 RubyOnRails API 项目。我的项目并不大,它只是一个玩具项目,有几个表和两个关联。 我所有的回复都是使用 oj gem 呈现的 n jon 格式,就像这样 render json: Oj.dump({...}), status: ok。一切正常。

另一方面,我们有一堆库,例如 ActiveModelSerializationjsonapi-rbfast_jsonapi 等。

我的问题是:如果我们只是简单地render json:... 为什么我们需要这些库?这些库做了哪些 render json:... 不能做的事情?是性能吗? 我的第二个问题。您能否建议我如何在 Ruby (on Rails) 中对这些库进行基准测试(最佳实践)?

最佳答案

这只是代码组织/重用的问题。使用诸如此类的库有助于将序列化限制在负责它的类中,因此允许 Controller /模型保持清洁。 请注意,一些库还提供实用程序,例如允许您选择要显示的字段、有用的 DSL 和缓存。

您可以将其视为 S.O.L.I.D 的应用程序“单一职责”原则:不要让一个类( Controller )同时负责呈现请求和序列化数据;将此工作委托(delegate)给负责此的另一个类(序列化程序)。

Ruby 有一个名为 Benchmark 的类,您可以使用它来测试不同序列化库的速度。 https://github.com/evanphx/benchmark-ips也可能证明是有用的。最后,您可以看到 Rails 服务器的输出,其中包含响应请求的时间(以毫秒为单位),以确定序列化是否对性能产生负面影响,但通常不会。

关于ruby-on-rails - 为什么我们需要 Ruby Serializer 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66296662/

相关文章:

json - Azure 静态 Web 应用程序 - staticwebapp.config.json 文件 MimeTypes

ruby-on-rails - 方法定义名称开头的竖线字符有何作用

ruby - 正确的设计 : Including module in ActiveRecord or helper method

css - Bootstrap Rails 5 没有设计我的应用程序

ruby-on-rails - 将变量传递给 Rails 部分

ruby-on-rails - 在 Controller 测试中使用通过 Active Storage 上传的图像创建对象时遇到问题

ruby-on-rails - 如何解决 "key not found: :ciphers"?

javascript - 如何将 json 响应显示回网页?

json - Jackson json反序列化,忽略json中的根元素

ruby-on-rails - "rails generate"不工作