如何将嵌套关系与 JSON API 中的 POST 的属性相关联

How to associate nested relationships with attributes for a POST in JSON API

根据spec, resource identifier objects不持有属性。

我想做一个 POST 来创建一个包含其他嵌套资源的新资源。 这些是基本资源:俱乐部(有名字)和许多职位输入)。想想一个拥有守门员、守门员、前锋、前锋等位置的足球俱乐部

当我做这个关联时,我想设置一些属性,比如这个特定团队所需的位置。例如,我只需要一名守门员,但我希望拥有一支拥有许多预备守门员的球队。当我在数据库中对这些实体建模时,我将在链接 table.

中设置所需的属性

这不符合 JSON API:

{
    "data": {
        "type": "club",
        "attributes": {
            "name": "Backyard Football Club"
        },
        "relationships": {
            "positions": {
                "data": [{
                        "id": "1",
                        "type": "position",
                        "attributes": {
                            "required": "true"
                        }
                    }, {
                        "id": "1",
                        "type": "position",
                        "attributes": {
                            "required": "false"
                        }
                    }
                ]
            }
        }
    }
}

这也是无效的:

{
    "data": {
        "type": "club",
        "attributes": {
            "name": "Backyard Football Club",
            "positions": [{
                "position_id": "1",
                "required": "true"
            },
            {
                "position_id": "1",
                "required": "false"
            }]
        }
    }
}

那么,如何才是处理这种关联的最佳方式呢?

此处最好的方法是为 club_position

创建一个单独的资源

创建一个 club 将 return 一个 url 到一个创建 club_positions,然后你将 post club_positions 到那个 url 与 positionclub 资源的关系标识符。

这样做的额外好处是 club_positions 创建可以并行化。