如何使用jsonapi格式发送无关数据
我正在尝试按照jsonapi规范构建一个api[.我想从两个不同的表发送不相关的数据。我应该如何发送。我可以按如下方式发送。根据规范,这是正确的方法吗?理想情况下,我们应该为此目的使用单独的端点,但由于涉及额外的n/w请求,我不想创建单独的端点如何使用jsonapi格式发送无关数据,json,elixir,phoenix-framework,json-api,Json,Elixir,Phoenix Framework,Json Api,我正在尝试按照jsonapi规范构建一个api[.我想从两个不同的表发送不相关的数据。我应该如何发送。我可以按如下方式发送。根据规范,这是正确的方法吗?理想情况下,我们应该为此目的使用单独的端点,但由于涉及额外的n/w请求,我不想创建单独的端点 { data: [ { type: "user", atrributes: { ... } }, { type: "company", attrib
{
data: [
{
type: "user",
atrributes: {
...
}
},
{
type: "company",
attributes: {
...
}
}
]
}
此外,目前我正在使用ja_serializer[序列化json。是否有一个好方法可以将多个表中的无关数据一起序列化
严格来说,作为JSON-API,您不能这样做
长答覆:
不要让生活变得不必要的复杂
问问你自己,避免额外请求的好处是否值得额外的代码复杂性。如果你在HTTP/2上运行服务器,那么额外的网络开销将是最小的
在许多情况下,如果你在未来保持简单和独立,你会发现回报——当你想做不同的请求,或者只是将公司与其他类型或资源结合起来时
1) 包装多个JSON-API响应
但是,如果您真的想要JSON-API和单个请求,那么您可以做的是将2个JSON-API响应封装到一个请求中
{
"responses": [{
"name": "companies",
"jsonapi": {"data": ... }
}, {
"name": "users",
"jsonapi": {"data": ... }
}]
}
然后在客户机中,您可以将它们分解,并在标准JSON-API库中作为单独的资源使用
2) 尝试从JSON-API中找到常见的“父级”并使用Relationship
你说这些资源是不相关的,但是如果你想同时请求它们,它们必须有一些共同点。也许是像“组织”(你)这样有很多公司和用户的东西
3) 其他选择
JSON-API旨在标准化对象到REST的映射。如果您不需要它,JSON-API就不适合您的用途
也许像GraphQL这样的东西更适合您。或者选择您的专有格式。为什么根据规范不可能呢?
数据
键可以是一个资源对象数组,唯一的要求是每个对象都有id
和类型
。