我一直在试验 RubyOnRails API 项目。我的项目并不大,它只是一个玩具项目,有几个表和两个关联。
我所有的回复都是使用 oj
gem 呈现的 n jon 格式,就像这样 render json: Oj.dump({...}), status: ok
。一切正常。
另一方面,我们有一堆库,例如 ActiveModelSerialization
、jsonapi-rb
、fast_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/