常规 REST API:在一个请求中插入 Parent 和 Child
General REST API: Insert Parent and Child at one request
我正在使用或多或少复杂的资源构建 REST API。
这么说吧,我在幕后有以下数据库结构。
ParentBase: id|name
ChildBase: id|name|parentId
所以,显然 childBase 的列“parentId”是 ParentBase 的 id 字段的外键。
是否允许在一个 post 请求中使用其 parent 创建一个 child 并管理 realtionship 服务器端。我的有效负载如下所示,url 将是 "/api/parents":
{
id: <set by server>,
name: Homer,
{
id: <set by server>,
name: Lisa,
parentId: <set by server (Homer's id)>
}
}
或者我是否必须首先使用自己的 post 请求创建 parent 然后获取返回的 ID,将其设置为 child 的 parentId然后用 child 做第二个 post 请求?
所以发送到 url "/api/parents":
{
id: <set by server>,
name: Homer
}
现在我得到了 Homer 的 id=35,我可以向“/api/children”发送第二个请求,有效负载为:
{
id: <set by server>,
name: Lisa,
parentId: 35
}
那么最佳做法是什么?
(我正在将 flask 与 sqlachemy 和 marshmallow 一起使用。所以也许您也知道如何使用这些框架解决此任务)
Is it allowed to create a child with its parent at one post request and manage the realtionship serverside.
就 REST 和 HTTP 而言,当然可以。
- 幕后数据结构的细节是实现细节,我们有意隐藏在HTTP facade后面;没有规则规定您的资源模型需要1:1与您的数据模型。
- 允许创建多个资源以响应单个请求
The 201 (Created) status code indicates that the request has been fulfilled and has resulted in one or more new resources being created. -- RFC 7231
我正在使用或多或少复杂的资源构建 REST API。
这么说吧,我在幕后有以下数据库结构。
ParentBase: id|name
ChildBase: id|name|parentId
所以,显然 childBase 的列“parentId”是 ParentBase 的 id 字段的外键。
是否允许在一个 post 请求中使用其 parent 创建一个 child 并管理 realtionship 服务器端。我的有效负载如下所示,url 将是 "/api/parents":
{
id: <set by server>,
name: Homer,
{
id: <set by server>,
name: Lisa,
parentId: <set by server (Homer's id)>
}
}
或者我是否必须首先使用自己的 post 请求创建 parent 然后获取返回的 ID,将其设置为 child 的 parentId然后用 child 做第二个 post 请求? 所以发送到 url "/api/parents":
{
id: <set by server>,
name: Homer
}
现在我得到了 Homer 的 id=35,我可以向“/api/children”发送第二个请求,有效负载为:
{
id: <set by server>,
name: Lisa,
parentId: 35
}
那么最佳做法是什么?
(我正在将 flask 与 sqlachemy 和 marshmallow 一起使用。所以也许您也知道如何使用这些框架解决此任务)
Is it allowed to create a child with its parent at one post request and manage the realtionship serverside.
就 REST 和 HTTP 而言,当然可以。
- 幕后数据结构的细节是实现细节,我们有意隐藏在HTTP facade后面;没有规则规定您的资源模型需要1:1与您的数据模型。
- 允许创建多个资源以响应单个请求
The 201 (Created) status code indicates that the request has been fulfilled and has resulted in one or more new resources being created. -- RFC 7231