json-api - 在单个请求中发布多个相关实体的正确 JSONAPI 方法是什么?
问题描述
在我假设的应用程序的某个时刻,为了提高效率,我想在一个请求中创建多个不同类型的相关实体。在下面的示例中,我以包含有关新用户及其相关头像的数据的方式对请求进行序列化。
// POST /api/users
{
data: {
attributes: { ... },
type: 'user',
relationships: {
avatar: {
data: {
attributes: { ... }
type: 'avatar',
}
}
}
}
}
问题是,在 JSONAPI 中正确/推荐的方式(如果有的话)是什么?
解决方案
JSON:API 规范尚不支持在单个请求中创建或更新多个资源。然而,对于即将到来的 v1.1 规范有一个原子操作扩展的提议。
但在大多数情况下,这种特性对于效率来说并不是必需的。您甚至可能通过将多个创建或更新请求捆绑为一个来增加服务器的负载。如今,使用 HTTP/2 并行执行多个请求很便宜。
如果操作相互依赖,它可能不如对一个请求执行此操作(例如,必须等待要创建的帖子才能创建此帖子的评论)。但在那种情况下,原子事务也是一个很强的要求。这是该扩展背后的主要驱动力。
所以回答你的问题:
- JSON:API 规范目前不支持它。
- 下一个版本(v1.1)很可能会通过扩展来支持它。
- 如果效率是您寻找此类功能的唯一原因,您可能根本不需要它。
推荐阅读
- docker - 删除由 docker 容器创建的共享卷
- html - CSS:flexbox内的按钮宽度小于内容
- git - 如何知道我是否有最新版本的文件 [git lfs lock workflow]
- java - selenium 配置 ChromeDriver 有效,但未找到 ChromeOptions
- python - 给定另一列值,计算一列上的一次性出现值
- c++ - 简单 Azure 示例中的异常?
- python - 如何匹配 23:59 之外的数字范围?
- python - 以有效的方式生成和检查组合中的每个元素
- python - 为什么这个正则表达式不匹配任何日期?
- python - 在 Python 字符串中仅乘以数值