- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图找到最佳实践,以便在 Restful API 中创建多对多关系。用例非常简单,但我无法真正找到“正确”的方法。
在我们的模型中,我们有 Kid,它与 Guardian 存在多对多关系。在关系表中,我们有 2 个额外参数,type( parent 、保姆、紧急情况等)和 active( bool 值)。
您只能将 Guardian 添加到现有的 Kid,但现有的 Guardian 可以链接到另一个 Kid>.
今天,我们就是这样做的
POST kids/{kidID}/guardians
{
"type": "parent"
"active": false
"guardian": {
"first_name": "foo"
"last_name": "bar"
}
}
这将创建 Guardian 并将其添加到 Kid。但是,使用这种方法我们无法处理我想将现有的 Guardian 添加到 Kid 的情况。这里是我找到的答案,以表示这一点,但我不知道哪个是最好的(和 Restful )方式(也许它们都不是好的......):
解决方案 1 - 保持今天的端点
但是把一个非强制性的 id 字段给 guardian。如果 id 为空,API 必须创建资源,否则只需检索它并在需要时更新值。
POST kids/{kidID}/guardians/
{
"type": "parent"
"active": false
"guardian": {
"id": "ab65f263-dd3d-bbc6-8b7b-57a3b4b26c21"
}
}
解决方案 2 - 在 2 个调用中中断此端点
# Create the Guardian
POST guardians/
{
"first_name": "foo"
"last_name": "bar"
}
# This method can only "link" the models
POST kids/{kidID}/guardians/
{
"type": "parent"
"active": false
"guardian_id": "ab65f263-dd3d-bbc6-8b7b-57a3b4b26c21"
}
[已编辑] 解决方案 2.5 - 创建与 PUT 的关系
和以前一样,您必须创建监护人,但是为了添加您创建的关系
PUT kids/{kidID}/guardians/{guardianID}
{
"type": "parent"
"active": false
}
辅助解决方案:在第二个选择中,我们可以通过以下方式更改资源的URI:
POST kids/{kidID}/kid-guardians/
因为它并没有真正发布一个“监护人”资源,而是一个 child 监护人资源(关系)。我不太喜欢它,因为使用旧的 URI 我们可以更容易地假设
GET kids/{kidID}/guardians/
会给你所有与 child 有关的守护者,但不是那个
DELETE kids/{kidID}/guardians/{guardianID}
将删除关系而不是 Guardian。
如您所知,我真的迷路了,非常感谢您的帮助。
最好的问候,
最佳答案
是否可以为关系本身创建第三类资源,例如“守卫”,而不是从属于其他资源的实例?这似乎是处理数据库中 n 对 n 关系的推荐和常用方法。
GET/guards?kid="Johnny"
会给你一个关系列表,你可以用它来获取所有监护人。 GET/guards?guard="Kelly"
,你可以猜到。 /kids
和 /guards
将仅保留有关资源本身的数据,并且可能比必须将关系数据保留为资源的一部分更容易维护。
我认为您可以通过使用关系中每个成员的链接而不是数字 ID 来获得更多 RESTful。你可以在 child 和监护人的表示中有一个像“关系”这样的字段,其中包含检索他们特定“监护人”所需的 URL + 查询字符串,如果有人需要的话。
关于rest - 在 Restful API 中创建多对多关系的 "right"方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40349909/
我有一个 Segment 类和一个这样的段数组: private static class Segment { int number, type; Segment(in
我在 SO 中看到一些创建 multilanguage websites in JavaScript 的好建议包括 this article on JavaScript internationaliz
我们有浏览器前缀或黑客 (for Google and Safari) text-align: -webkit-right; (for Firefox) text-align:
过去几天我一直在关注这个问题,我正处于需要寻求帮助的地步。 http://cub.northnodes.com/index.php/about/mission/ 我需要立即捐赠 列一直 float 到
When I press right ctrl, I want the right shift the text will align right. When I press left ctrl le
我已经将右侧的列拆分为顶部和底部。在每个部分中,我在执行以下操作时遇到问题:我希望顶部占据左列高度的 50%,底部占据左列高度的另外 50%。 +-------------------+-------
我知道这个问题的标题很糟糕。对不起。 我有四个 div similar to this .我想要做的只是让 div 编号 2 和 4 之间的垂直空间被删除,而不改变 HTML 的结构。是否可以仅使用
我将表格设置为 100% 宽度。我会添加一个带有 php 的随机 div,有时会充满广告。我希望广告 div 位于表格的右侧和内容。我希望表格位于左侧,但仍为 100% 左右,它将填充广告 div 左
这个问题在这里已经有了答案: Bootstrap align navbar items to the right (24 个答案) 关闭 5 年前。
.floatright { float: right;margin: 0 0 10px 10px;clear: right;width:60px; height:60px; } Lorem
我正在尝试将 td 中的某些内容右对齐。 align="right"有效,但 text-align:right 无效。这是一个 jsfiddle显示这两种情况的示例。除了右对齐右列外,这两种情况是相同
在设计网站时,您认为用于特定任务的最佳图像格式是什么? 在试图找出用于特定任务的格式时,我总是发现自己处于两难境地……例如,我应该全面使用 .jpg 吗?或者,我何时以及为什么应该使用 .png? 例
我是一个 MySQL 新手,今天我尝试设置一个超过 5 行的 MySQL 调用。我不断收到语法错误,我尝试修复了几个小时,但我不知道问题出在哪里。这是代码: USE myDatabase; DELIM
这让我发疯。我有一个 div float 到另一个 div 的右侧,如下所示: Current Membership: 我有以下 css 规则: div#container { f
我有以下代码片段,它会产生不需要的“填充”区域,而填充为零。如何避免这个区域? 代码 div.left { background-color: red; max-width: 25%; f
在 C++ 中,表达式 left() = right() 求值 right() left() 按那个顺序。 right() 先行,正如已讨论过的 here. 我想不出让 right() 先走的理由。你
我有一个很小的菜单列表,当鼠标靠近时它应该会增长。在其原始状态下,菜单是右对齐的,悬停时每第二个元素向右移动并左对齐以为增加的高度腾出空间(参见 JSFiddle )。 ul { font-siz
td.myclass{ width: 6em; text-align: right; padding-right: 2em; } 如您所见,我希望单元格中的文本右对齐,距离单元
你怎么能看到 http://jsfiddle.net/73wst/ 我想在停止下开始,但我不知道如何设置它的样式。 我的 HTML: Stop Start 我的 CSS: .sta
一个大的内部 div 在一个小的外部 div 中,并且外部 div 溢出自动。但是为什么没有内部 div margin-right 和外部 div padding-right? html
我是一名优秀的程序员,十分优秀!