JSON API V1 创建嵌套资源

JSON API V1 Creating Nested Resources

我正在使用使用 AR 作为 ORM 的 Grape API 实现 JSON API V1 兼容 API。我对创建嵌套资源/关系的格式有点困惑。看起来我们需要一次创建一个资源并且可以 link 到 exisitng 资源。但是我们不能说在同一个请求中为 has many 关系创建记录。

我的情况:有Donation模态。它有很多Split。一个拆分属于一个Fund。我需要创建一个有多个拆分的捐赠。

问题:如何根据JSON:API建议构建API?

看了几次文档,我想我不能在一次 API 调用中完成捐赠,我将不得不单独创建每个资源,并且可能是 运行 的最终提交触发捐赠。

第 1 步:创建捐赠 - 假设 returns ID 100

POST /api/v1/donations

{ type: "donation", data: { comments: "abc" } }

第 2 步:创建分组 1

POST /api/v1/splits

{
  type: "split",
  data: { amount: 100_00 },
  relationships: {
    data: [{ type: "fund", id: 5 }, { type: "donation", id: 100 }]
  }
}

最后:用

之类的东西触发捐赠

补丁/api/v1/donations/100

{
  type: "donation"
  data: { 
    state: "process"
  }
}

有没有办法在一个请求中创建它?

JSON:API规范在v1.0中不支持在一个请求中创建、更新或删除多个资源,这是当前的稳定版本。

即将推出的 v1.1 计划支持 Extensions, which allow to extend the base specification. There is a proposal of a Atomic Operations extension provided by one of the maintainers of the specification. It's planned to be released with v1.1 作为官方扩展。