Rails 选择 jsonapi-resources 的理由

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

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

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

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

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

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

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

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