微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通用 REST API:在一个请求中插入父级和子级

如何解决通用 REST API:在一个请求中插入父级和子级

我正在构建一个包含或多或少复杂资源的 REST API。

让我们说,我在幕后有以下数据库结构。

ParentBase:id|name

ChildBase:id|name|parentId

因此,childBase 的“parentId”列显然是 ParentBase 的 id 字段的外键。

是否允许在一次发布请求中与其父级创建子级并管理服务器端的realtionship。我的有效负载如下所示,网址为“/api/parents”:

{
  id: <set by server>,name: Homer,{
    id: <set by server>,name: Lisa,parentId: <set by server (Homer's id)>
  }
}

或者我是否必须首先使用自己的发布请求创建父级,然后获取返回的 ID,将其设置为孩子的 parentId 并与孩子进行第二次发布请求? 所以发送到网址“/api/parents”:

{
  id: <set by server>,name: Homer
}

现在我得到了 Homer 的 id=35,我可以用有效载荷向“/api/children”发送第二个请求:

{
  id: <set by server>,parentId: 35
}

那么最佳实践是什么?

(我正在使用带有 sqlachemy 和 marshmallow 的烧瓶。所以也许你也知道如何使用这些框架解决这个任务)

解决方法

是否允许在一次发布请求中与其父级创建子级并管理服务器端。

就 REST 和 HTTP 而言,当然可以。

  1. 幕后数据结构的细节是实现细节,我们特意隐藏在HTTP Facade背后;没有任何规则规定您的资源模型必须与您的数据模型 1:1。
  2. 允许创建多个资源以响应单个请求

201(已创建)状态代码表示请求已完成并导致创建一个或多个新资源。 -- RFC 7231

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。