Rails 选择 jsonapi-resources 的理由

zfben for 简单心理 · 发布于 2016年07月30日 · 最后由 zfben 回复于 2016年08月03日 · 1440 次阅读
147

Rails 5 发布时的官方日志里,推荐了三种用于构建 API 的 gem,分别是 JbuilderActive Model SerializersJSONAPI::Resources,其中前两种需要配合 rails-api 来使用,只有 jsonapi-resources 提供了 JSONAPI::ResourceController。

我们最终选择了 jsonapi-resources 主要基于以下原因:

  1. 它的 resource 语法与 active_model_serializers 相近,而我们之前使用的是 active_model_serializers
  2. active_model_serializers 不支持 abstract 特性,必须基于某个 model,而我们有些 resource 并非基于 model
  3. jsonapi-resources 内置了 fields 选项,可以方便的在请求端指定返回的字段,而不必返回全部字段
  4. 返回的数据结构符合 jsonapi 规范
  5. JSONAPI::ResourceController 提供了 RESTful 的封装,可以省去不少代码

以上的原因只是对目前项目来说最需要的特性,更多特性可以去看官方文档。

参考链接:

jsonapi-resources: https://github.com/cerebris/jsonapi-resources

jsonapi:http://jsonapi.org

原文地址: https://jiandanxinli.github.io/2016-07-30.html

共收到 4 条回复
27

active_model_serializers 用的我很不爽,各种不自由,也不 magic,跟 grape-entity 和 jbuilder 比相差甚远 jsonapi-resources 看起来很强大的样子,内置 fields 选项这个特性很实用

7033

同纠结,但是感觉JSONAPI::Resources好复杂...在rails5下会不会太重了...相比之下,AMS简单一些.没用过Jbuilder...

3444

没用过这个,刚刚看了看JR的文档。感觉我还是偏向AMS一些。 AMS还是更偏向一个serializer的设置, 这个JR则是把整个api都帮你做了。简单的项目比较方便,但是随着代码越来越复杂,gem的便利不在的时候还是觉得单一功能更符合我喜好。 字段的筛选两个都可以做到。AMS也有json api输出。

另外纠正下楼主, 第二条对应的是abstract特性。 immutable 是无法put或patch。

147

#3楼 @flypiggys 谢谢,已修正。目前项目中还没遇到因为复杂导致的坑,等遇到了会继续分享经验 😁

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册