【发布时间】:2016-12-12 08:59:33
【问题描述】:
我在 JAVA 中有类层次结构,应该可以通过 angularJS SPA 应用程序的 rest API 获得这些层次结构(数据保存在 PostgreSQL DB 中)
类层次结构如下:
- PERSON BASE ABSTRACT CLASS 包含姓名和年龄
- CHILD EXTENDS PERSON 包含最喜欢的电视节目
- PARENT EXTENDS PERSON 包含孩子列表
- GRANDPARENT EXTENDS PERSON 包含父母列表
UI 看起来像一个层次结构树,您可以在其中查看和编辑所有数据。
我可以想到三种方法来对此进行建模:
- 一个具有层次结构的端点 /grandparent:id/parents:id/children:id
示例
发布 /grandparent/1/parents/2/children
为了创造一个新的孩子
优点:更易读,更安静 缺点:实现起来很复杂,当我编辑一个孩子时,我不关心所有的层次结构,我最多需要直接的父级来创建它, 但对于编辑,子 ID 足以在数据库中找到它
- 三个端点:/grandparents:id、/parents:id、/children:id
发布 /children?parentID=2
优点: ? 缺点:很多重复
3.一个端点/人(在请求/响应JSON中,使用type字段表示类和一个parentID字段。
发布/人 { 姓名 .. 类型:儿童 父母身份:2 }
优点: 多态性 缺点:不太安宁?
你怎么看?
【问题讨论】:
-
我喜欢多态的(几乎是 JSON-RPCish)。 REST 仅在恕我直言之前有效。尤其是有时您必须从 url 和其他时间(或同时)有效负载中提取参数时。最后......是什么让你如此确定投票会给出正确的答案?两个字:总统选举。 :)
-
为什么你认为第三个是“更少的 RESTful”?它要么是 RESTful,要么不是。 URL 签名是 RESTful 的正交问题。
-
您可以将 2 组合在一起,具有
/people/:id端点和/people/:id/parents。然后您可以轻松引用每个人(确保您可以添加另一个端点/people/:id/grandparents,但恕我直言,这似乎是多余的)
标签: java angularjs json rest polymorphism