Mysql 如何在REST中实现父子关系,允许JAXRS中的层次结构 问题:如何在REST中检索分层对象?
我有一个以父子方式关联的对象的层次结构。数据存储在关系数据库中,每条记录通过使用外键Mysql 如何在REST中实现父子关系,允许JAXRS中的层次结构 问题:如何在REST中检索分层对象?,mysql,rest,jersey,nested,hierarchy,Mysql,Rest,Jersey,Nested,Hierarchy,我有一个以父子方式关联的对象的层次结构。数据存储在关系数据库中,每条记录通过使用外键parent\u id指向其父记录。在这种情况下,所有记录都存储在一个表中。每个层次结构级别都可以通过遍历父级列表直到到达根节点来解析。如何使用REST访问这些元素,特别是在我可能事先不知道层次结构的深度时 +----------------------------------+----+-----------+ | Hierarchy Level | id | parent_i
parent\u id
指向其父记录。在这种情况下,所有记录都存储在一个表中。每个层次结构级别都可以通过遍历父级列表直到到达根节点来解析。如何使用REST访问这些元素,特别是在我可能事先不知道层次结构的深度时
+----------------------------------+----+-----------+
| Hierarchy Level | id | parent_id |
+----------------------------------+----+-----------+
| thing/sub1 | 1 | NULL |
| thing/sub1/subsub-A | 2 | 1 |
| thing/sub1/subsub-A/subsubsub-A1 | 3 | 2 |
| thing/sub1/subsub-A/subsubsub-A2 | 4 | 2 |
| thing/sub1/subsub-B | 5 | 1 |
| thing/sub2 | 6 | NULL |
| thing/sub2/subsub-A | 7 | 6 |
| thing/sub2/subsub-C | 8 | 6 |
+----------------------------------+----+-----------+
目标:解析嵌套对象
实现一个能够解析以下URL的REST接口:
GET http://www.example.org/service/thing/sub1/subsub-A/subsubsub-A2
答案是
{id=4}
迄今为止所做的尝试:
很明显,以下结构很容易解决,因为我知道应该使用哪些路径参数:
http://www.example.org/service/thing/sub1/
我正在琢磨如何解析URL中的嵌套子组件。我确实找到了,但我不知道如何将其应用到我的场景中。我正在使用Jersey框架进行实现。我正在寻找一种方法,如何从后向前遍历REST URL,检索每个中间子组件的父ID,从而能够识别完整的对象,例如:
http://www.example.org/service/1/2/4
我认为解析这样的URI结构要快得多:
/service/tree/{id}
而不是使用嵌套标识符
为单个节点的父节点、同级节点创建链接实际上非常容易:
-目标IRI指向表示上下文IRI的集合资源的资源collection
-指文档层次结构中的父文档up
-传递链接上下文的标识符self
-指一系列资源中最远的前一个资源的IRIfirst
-指有序资源系列中的前一个资源。“prev”的同义词previous
-表示链接的上下文是系列的一部分,系列中的下一个是链接目标李>next
-指一系列资源中最远的后续资源的IRIlast
@Path("/segments")
public class PathSegments {
@Context
UriInfo uriInfo;
public PathSegments() {
}
@GET
@Path("{ uri: (.+)?}")
@Produces(MediaType.TEXT_PLAIN)
public String resolve() {
String hierarchy="";
for (int i = 0; i < uriInfo.getPathSegments().size(); i++) {
hierarchy+= "[" + i + "] " + uriInfo.getPathSegments().get(i);
if(i<uriInfo.getPathSegments().size()-1){
hierarchy+=" --> ";
}
}
return hierarchy;
}
}
谢谢@inf3rno,我知道我可以只解析URL,但从技术上讲,这并不能回答我的问题。
[0] segments --> [1] a --> [2] b --> [3] c --> [4]