在单个请求中发布多个相关实体的正确 JSONAPI 方式是什么?

Leo*_*ele 2 json-api

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

// POST /api/users
{
    data: {
        attributes: { ... },
        type: 'user',
        relationships: {
            avatar: {
                data: {
                    attributes: { ... }
                    type: 'avatar',
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

jel*_*han 5

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

但在大多数情况下,这样的功能并不是效率所必需的。通过将多个创建或更新请求捆绑为一个请求,您甚至可能会给服务器带来更多负载。如今,使用 HTTP/2 并行执行多个请求的成本很低。

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

所以要回答你的问题:

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