最近打算搞一个 rails API 前后端分离的项目,在使用 json 做数据交互的时候犹豫是否需要遵循jsonapi规范,
但是如果这样做的话就需要在后端做一次 serialize,然后数据到前端了还要做一遍 deserialize 的操作,这么做是否值得?
我之前用 json API 规范开发过一个项目,个人觉得 jsonapi 的接口有几个优点:
model A {
has_many: modelB
}
正常查 modelA 列表,并 include model B 的时候,直接返回 json 的结构:
[
A1: {
...
bs: [b1, b2, b3 ...]
},
A2: {
...
bs: [b1, b2, b3 ...]
}
]
这时候如果 modelB 的属性多的话,b1, b2,b3 .. 等都会重复 to json,最后返回的 json 字符串就会很长。
如果使用 jsonapi 规范做序列化,会得到下面的结构:
data: [
A1: {
...
relationtships: {
bs: [b1.id, b2.id, b3.id .....]
}
},
A2: {
...
relationtships: {
bs: [b1.id, b2.id, b3.id .....]
}
}
],
included: [
b1, b2, b3 ...
]
在 relationships 中只存了 relation 的 id,b1, b2, b3 都只做一遍序列化,然后存到 included 中
但是缺点也很明显:后端序列化后,前端又要做一遍反序列化,感觉有点麻烦。
不知道大家对于 jsonapi 规范是持什么态度,有踩过哪些坑么?
另外,我目前用的数据序列化和反序列化的轮子:
如果有比较好用的轮子也推荐一下。
不遵守 jsonapi 规范的话,我就用的 jbuilder。