假设我有一个带有以下接口的宁静网络服务:
GET /some/parent
这将返回类似
[
{
urn: "/some/parent/1",
name: "parent1",
children: [ "/some/child1", "/some/child2" ]
},
{
urn: "/some/parent/2",
name: "parent2",
children: [ "/some/child3", "/some/child4" ]
}
]
而且,我有
GET /some/parent/{id}
返回如下内容:
{
urn: /some/parent/1,
name: parent1,
children: [
{
urn: "/some/child1",
name: "child1"
},
{
urn: "/some/child2",
name: "child2"
}
]
}
因此,当请求父母列表时,每个父母的 json 表示将与孩子骨灰盒一起列出。当请求特定的父资源时,json 表示将包含一个子 json 表示的列表。
使用 jersey 的常用方法是定义两个简单的 java pojo 和一个简单的资源:
public class Parent {
private String id;
private String name;
private List<String> childIds;
...
@JsonIgnore
public String getId()...
@JsonProperty
public String getUrn()...
}
public class Child {
private String id:
private String name;
...
@JsonIgnore
public String getId()...
@JsonProperty
public String getUrn()...
}
@Path("/some/parent")
@Produces(MediaType.APPLICATION_JSON)
public class ParentResource() {
@GET
public List<Parent> findAll() {
List<Parent> result = // some database query call
return result;
}
@GET
@Path("{id}")
public Parent find(@PathParam("id") String id) {
Parent parent = // some database call
return parent;
}
}
如何在上述情况下注入子骨灰盒/对象?有没有最佳实践?你如何解决这个问题?
谢谢。