Rabl、Jbuilder 或手动 json 构建 api?

2024-04-20

要为大规模应用程序构建 api,就性能而言,哪种方法更好,我应该使用 Rabl、Jbuilder 还是手动构建 json 对象?我正在为移动应用程序构建 api /endpoints。


在性能方面,您应该尝试创建一些基本的性能测试,并对它们进行分析。

假设应用程序模型关联中最复杂的部分是响应能力方面的最弱点,并围绕它设计测试。

一般来说,您还应该考虑其他一些事情。

  • as_json覆盖将很快在模型中失控,并成为应用程序的脆弱部分。许多人将 API 视为视图,因此它的逻辑应该与模型分离,以保持灵活性/可互换性和可测试性。这是 JBuilder 和 RABL 的主要优点。最终甚至是一个简单的 JSON api 构建as_json当需要扩展时,它们会请求重构,因此学习/使用 DSL 的初始复杂性可能是值得的。也就是说,在某些情况下使用它是完全可以的as_json您只需要注意可扩展性和维护方面的问题。

  • Jbuilder 过去的性能相当差,但是在这个问题首次发布的同时,它得到了深入的改进。在此之前,RABL 的性能要好得多。此时,Jbuilder 的速度要快一些。

  • RABL 的 DSL 普遍不如 Jbuilder 的受欢迎,它在入门和后期维护方面都比较困难。一般来说,Jbuilder 的 DSL 更简单、更容易学习/使用,在这两种情况下都是 YMMV,但普遍的共识似乎是 Jbuilder 更容易上手和运行。

由于这个问题已经有 5 个月了,抱歉我没有早点看到它,我希望这个决定很早就做出了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rabl、Jbuilder 或手动 json 构建 api? 的相关文章

  • json_encode() 非 utf-8 字符串?

    所以我有一个字符串数组 并且所有字符串都使用系统默认值ANSI编码并从 SQL 数据库中提取 因此有 256 种不同的可能的字符字节值 单字节编码 有什么方法可以让我得到json encode 工作并显示这些字符而不必使用utf8 enco
  • rspec 不适用于设计用户身份验证

    我正在尝试使用 RSpec 来测试我的 Rails 应用程序 该应用程序使用设计用户身份验证 gem 以下是已捆绑的相关 gem 的列表 devise 3 4 1 rails 4 1 7 4 1 6 rspec 3 1 0 rspec co
  • 尝试解码 JSON 日期时显示“JSON 写入中的类型无效 (__NSTaggedDate)”

    当我尝试从具有日期变量的数据库中解码 JSON 对象时 出现错误 由于未捕获的异常 NSInvalidArgumentException 而终止应用程序 原因 JSON 写入中的无效类型 NSTaggedDate 错误发生在以下代码行 le
  • 授予 Rails 应用 API 访问权限的最佳身份验证方法

    我想为我的网络应用程序提供经过身份验证的 API 访问 此类服务的消费者通常是其他网站 服务 验证这些用户身份的最佳方法是什么 OAuth openID http 身份验证 正如我们的工作一样 哪个最好 的答案是这样的 是 这取决于 HTT
  • 在JQuery中加载本地json文件

    这里是初学者 我一直在尝试与该主题的答案不同的方法 但它们似乎都不起作用 我看到这个问题已经被问了很多 但不知何故我仍然找不到答案 我想使用本地 json 文件 该文件与我的 JavaScript 和 HTML 文件位于同一文件夹中 这样我
  • 如何使用 d3.v4 中的 JSON 数据创建树布局 - 不使用 stratify()

    我正在尝试将一些 d3 代码从 v3 更新到版本 4 我有一个使用 JSON 数据的树形图 d3 v4 示例展示了如何使用 stratify 将表格数据 例如flare csv 转换为分层数据https bl ocks org mbosto
  • 如何在rails中定义自定义路径?

    我有一个用户模型 如果我做 def my action user User new end then I get undefined method users path for
  • has_many 关系的动态 class_name

    我正在尝试与动态 class name 属性建立 has many 关系 class Category lt ActiveRecord Base has many ads class name gt lambda return self i
  • 使用 jquery 迭代 JSON 对象

    为什么以下不起作用 在循环内 当 myJSON 为空或不为空时 它永远不会打印 url each parseJSON myJSON function key value alert value url 对于这个 JSON 结构 host f
  • Capistrano 杀死资产:预编译

    我正在尝试部署我的应用程序 但我不断收到 err xxx xxx xx xxx bash line 1 9953 Killed bundle exec rake RAILS ENV production RAILS GROUPS asset
  • 从 Django Rest Framework 中的 Json 字符串中删除反斜杠

    dct data json tour data dict tour data json dumps dct data 如何删除这些反斜杠json 这是我的输出 strFileOpenDateAjxKey 2018 01 16 12 40 2
  • (可选)根据运行时值序列化属性

    从根本上讲 我想根据序列化时的值包含或省略生成的 Json 中的属性 更具体地说 我有一个类型 它知道是否已为其分配了值 并且我只想序列化该类型的属性 如果有 has是分配给它的东西 所以我需要在运行时检查该值 我试图让我的 API 更容易
  • 在 Ruby on Rails 中渲染部分集合正在乘以项目

    我想在 Ruby on Rails 的页面中显示项目列表 我使用部分 in my index html erb我有的文件 in list news html erb I have div class news div
  • 使用对象键作为 JSON 架构中的类型

    假设我想根据 Intellij IDEA 中的 JSON 架构验证 YAML 文件 该文件的结构如下 foo command touch tmp a txt I know I don t need this but it s an exam
  • 如何使用 mongo-go-driver 有效地将 bson 转换为 json?

    我想将 bson 转换为mongo go 驱动程序 https github com mongodb mongo go driver有效地转换为 json 我应该小心处理NaN 因为json Marshal失败如果NaN存在于数据中 例如
  • 如何保留一级对象并仅提取其子密钥之一?

    我正在使用 terraform state json 输出 并想对其进行一些转换 鉴于 terraform 发出的输入 cost sensitive false value 123 test id sensitive false value
  • 单表继承发现问题

    我有以下3个rails类 它们都存储在一张表中 使用rails的单表继承 class Template lt ActiveRecord Base class ThingTemplate lt Template class StockThin
  • 在 d3v4 堆积条形图中使用 JSON

    我找到了一个d3v3堆积条形图示例 http bl ocks org mstanaland 6100713我想使用它 因为它使用 json 数据 还有一个d3v4规范条形图示例 https bl ocks org mbostock 3886
  • 您将如何整理这个控制器逻辑?

    我在控制器中有一些逻辑 如果满足某些条件 它会设置对象的状态 if params concept consulted legal 0 params concept consulted marketing 1 concept attribut
  • Rails 和 Mysql 的毫秒数

    使用 Rails Mysql 时存储时间 以毫秒为单位 的最佳方式是什么 我将使用小数和composed of 以便能够将该值作为Ruby 时间进行操作 有人有更好的主意吗 自从提出这个问题以来 已经过去了好几年了 这是更新的解决方案 ht

随机推荐

  • “文本可视化工具”使用哪个类?

    当我使用DebuggerVisualizer属性如下 c assembly DebuggerVisualizer typeof DataSetVisualizer typeof DataSetVisualizerSource Target
  • 使用 XSL 进行转换而无需对最终输出进行 HTML 编码的属性方式是什么?

    所以 我正在使用 NET 我有一个 XSL 文件 C 中的 XslTransform 对象 它读取 XSL 文件并将一段 XML 数据 内部制造 转换为 HTML 我注意到我的最终输出是 lt and gt 自动编码成 lt and gt
  • 使用开关启用和禁用推送通知

    我正在使用 firebase 推送通知 FCM 并且我想使用切换按钮启用和禁用通知 为此 我共享了启用和禁用通知的首选项 但似乎我的逻辑根本不起作用 开关打开或关闭没有任何区别 我仍然收到通知 我需要帮助谢谢 活动 val sharedPr
  • LoadfromText 给出错误 2285(Microsoft Office Access 无法创建输出文件)

    当使用loadfromtext在access中导入表单时 我不断收到运行时错误2285 在互联网上搜索发现很多人都有同样的问题 但没有解决方案 有谁知道导致此错误的原因是什么 Edit 此外 在包含数据库的文件夹中还会创建一个名为 erro
  • 如何对服务的默认 WCF 端点进行硬编码?

    在自托管服务中 我想使用 App config 中指定的端点 如果存在 或者如果 App config 为空 则使用代码中指定的默认端点 我怎样才能做到这一点 Edit 澄清一下 这是在服务器 服务 端使用 ServiceHost 一种方法
  • jQuery 在所有浏览器中的 SlideUp() 上闪烁...附有示例页面

    我知道这个问题已经讨论过好几次了 但我有一个有点不同的问题 当调用 slideUp 并且浏览器风已经向下滚动以查看所有底部内容时 当 div 滑动关闭时它会闪烁多次 示例页面如下 只需单击它所说的位置 然后滑动到底部并关闭上面的 div 之
  • printf 内部如何工作? [复制]

    这个问题在这里已经有答案了 可能的重复 无需汇编的 C C 函数定义 https stackoverflow com questions 2442966 c c function definitions without assembly 你
  • 以下哪种脚本语言更适合笔测试? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 首先 我想避免语言上的激烈争论 可供选择的语言有 Perl Python 和 Ruby 我想说的是 我对所有这些都感到满意 但问题是我不能只专注
  • 2次API调用响应后执行代码

    您好 我正在进行两个 API 调用来进行一些检查 我想在两个调用完成后执行代码 var firstCall request get first function error response body body JSON parse bod
  • C# 外壳扩展

    在 NET 中创建 shell 扩展还有比这更简单的方法吗 http www theserverside net tt articles showarticle tss id ShellExtensions http www theserv
  • 如何从文本中提取 URL

    如何在 Ruby 中从纯文本文件中提取所有 URL 我尝试了一些库 但在某些情况下它们会失败 最好的办法是什么 如果您喜欢使用 Ruby 中已提供的功能 require uri URI extract text here http foo
  • 如何在 Swift 中永远重复动画(HUGE_VALF)?

    根据文档 永久重复 CABasicAnimation 的方法是设置其repeatCount to HUGE VALF 但在斯威夫特中 HUGE VALF导致编译错误 Swift 似乎不知道标准库 或者这个常量所在的地方 现在我该怎么做 Se
  • 作为 JavaFX 应用程序启动屏幕的图像不会自动隐藏

    我有一个简单的 png 图像文件 我希望在加载 JavaFX 应用程序时显示该文件 我使用 NetBeans 作为 IDE 并且我知道可以像这样添加启动屏幕 项目属性 gt 运行 gt VM 选项 splash path to image
  • 如果磁盘可用空间很少,如何优化 9GB 表?

    我在 12GB 磁盘上有一个 9GB myisam 表 有 5MB 可用空间 我如何optimize桌子 问题是OPTIMIZE通过将整个表复制到一个新文件来工作 因此我需要 9GB 的可用空间才能成功 我能想到的唯一解决方案是 停止在桌子
  • 使用正则表达式验证英国邮政编码

    我想用英国邮政编码验证字段 可以使用什么正则表达式来验证该字段 A Z 1 2 0 9 0 9A Z 0 1 0 9 A Z 2 GIR 0AA 确实显得有效 因为它有例外GIR 0AA 所以 请帮我写一个没有任何异常的表达式 如果你指的是
  • 如何注册新的payum支付方式并添加操作?

    我创建了一个 payum 付款方式 我设置了一个存储付款详细信息的付款表单 然后生成付款安全令牌 到目前为止 一切似乎都正常 payum 会在存储中生成令牌 但是 我似乎无法注册它 我不知道应该在哪里添加操作 以便在加载付款方式时使用它们
  • 如何同时循环多个数组(并行)

    好吧 我不知道为什么这这么难 我找到的所有信息仅适用于像 array combine 这样的两个数组 我有 3 个从表单中动态创建的输入字段获取的数组 所以现在我想检索数据并将其打印出来 如下所示 Item1 array1 Item1 ar
  • 如何在 Flutter 中对文本的 fontSize 进行动画处理?

    有什么方法可以动画增加 减少fontSize in a Text widget 可能更简单的解决方案是使用AnimatedTextStyle double size 10 override Widget build BuildContext
  • 如何将 HTML 代码导入到 JSF 页面?

    我正在尝试导入这个page http dl dropbox com u 5714646 Highcharts 2 2 0 examples pie donut index htm到我的 JSF 页面 该页面将有数据库来获取数据 以更具交互性
  • Rabl、Jbuilder 或手动 json 构建 api?

    要为大规模应用程序构建 api 就性能而言 哪种方法更好 我应该使用 Rabl Jbuilder 还是手动构建 json 对象 我正在为移动应用程序构建 api endpoints 在性能方面 您应该尝试创建一些基本的性能测试 并对它们进行