如何将嵌套关系与 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 与 position
和 club
资源的关系标识符。
这样做的额外好处是 club_positions 创建可以并行化。
根据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 与 position
和 club
资源的关系标识符。
这样做的额外好处是 club_positions 创建可以并行化。