首页 > 解决方案 > 在单个请求中发布多个相关实体的正确 JSONAPI 方法是什么?

问题描述

在我假设的应用程序的某个时刻,为了提高效率,我想在一个请求中创建多个不同类型的相关实体。在下面的示例中,我以包含有关新用户及其相关头像的数据的方式对请求进行序列化。

// POST /api/users
{
    data: {
        attributes: { ... },
        type: 'user',
        relationships: {
            avatar: {
                data: {
                    attributes: { ... }
                    type: 'avatar',
                }
            }
        }
    }
}

问题是,在 JSONAPI 中正确/推荐的方式(如果有的话)是什么?

标签: json-api

解决方案


JSON:API 规范尚不​​支持在单个请求中创建或更新多个资源。然而,对于即将到来的 v1.1 规范有一个原子操作扩展的提议。

但在大多数情况下,这种特性对于效率来说并不是必需的。您甚至可能通过将多个创建或更新请求捆绑为一个来增加服务器的负载。如今,使用 HTTP/2 并行执行多个请求很便宜。

如果操作相互依赖,它可能不如对一个请求执行此操作(例如,必须等待要创建的帖子才能创建此帖子的评论)。但在那种情况下,原子事务也是一个很强的要求。这是该扩展背后的主要驱动力。

所以回答你的问题:

  • JSON:API 规范目前不支持它。
  • 下一个版本(v1.1)很可能会通过扩展来支持它。
  • 如果效率是您寻找此类功能的唯一原因,您可能根本不需要它。

推荐阅读