我正在尝试在jsonapi specfication [http://jsonapi.org/]之后构建一个api。我想从两个不同的表中发送不相关的数据。我该怎么发送它。我可以发送如下。根据规格,它是正确的方式吗?理想情况下,我们应该为此目的设置单独的端点,但由于涉及额外的n / w请求,我不想创建单独的端点。
{
data: [
{
type: "user",
atrributes: {
...
}
},
{
type: "company",
attributes: {
...
}
}
]
}
目前我还在使用ja_serializer [https://github.com/vt-elixir/ja_serializer/]来序列化json。是否可以将来自多个表的无关数据序列化在一起
答案 0 :(得分:0)
简短回答: 严格来说,作为JSON-API你不能这样做。
答案很长:
问问自己避免额外请求的好处是否值得额外的代码复杂性。如果您在HTTP / 2上运行服务器,那么额外的网络开销将是最小的。
在许多情况下,如果您将其保持简单并在以后分开 - 当您想要执行不同的请求或仅将公司与其他类型或资源等组合时,您将填写查找回报。
但是如果你真的想要JSON-API和单个请求,那么你可以做的就是将2个JSON-API响应包装成一个。有人这样想:
{
"responses": [{
"name": "companies",
"jsonapi": {"data": ... }
}, {
"name": "users",
"jsonapi": {"data": ... }
}]
}
然后在客户端中,您可以将它们分解并在标准JSON-API库中用作分离的资源。
你说这些资源是无关的,但如果你想要一起请求它们,它们必须有一些共同之处。也许它就像“组织”(你),有很多公司和用户?
JSON-API旨在将对象直接映射到REST映射。如果您不需要它,JSON-API不适合您的目的。
也许像GraphQL这样的东西会更适合你。或者只是选择专有格式。