我正在用或多或少复杂的资源构建一个REST API。
比方说,我有下面的后台数据库结构。
ParentBase:id|name
ChildBase:id|name|parentId
所以,显然列";parentId";childBase的是ParentBase的id字段的foreignKey。
是否允许在一次post请求中与其父级创建一个子级并管理realtionship服务器端。我的有效载荷将如下所示,并且url将是"/api/家长":
{
id: <set by server>,
name: Homer,
{
id: <set by server>,
name: Lisa,
parentId: <set by server (Homer's id)>
}
}
或者我必须先用自己的post请求创建父级,然后获取返回的id,将其设置为child的parentId,然后对child进行第二次post请求?所以发送到url"/api/家长":
{
id: <set by server>,
name: Homer
}
现在我得到Homer的id=35,并且我可以向"/api/儿童";有效载荷:
{
id: <set by server>,
name: Lisa,
parentId: 35
}
那么,什么是最佳实践呢?
(我使用的是带有sqlachemy和棉花糖的flask。所以也许你也有一个提示,如何用这些框架解决这个任务(
是否允许在一次post请求中与其父级创建子级并管理realtionship服务器端。
就REST和HTTP而言,这是肯定的。
- 场景背后的数据结构细节是实现细节,我们故意将其隐藏在HTTP门面后面;没有规则规定资源模型需要与数据模型1:1
- 允许创建多个资源以响应单个请求
201(已创建(状态代码表示请求已完成,并导致创建了一个或多个新资源。--RFC 7231