我正在使用 spring 3 和 hibernate 4 开发一个 RESTfull 服务器。
我需要实现“扩展”机制以支持对用户资源的 GET 请求。
目前,当您对用户执行 GET 请求时,您会得到以下 JSON(通过 Jackson 映射):
{
href: "http://...."
name: "John doe"
age: "30"
userData1 : {
href: "http://...."
field1: "bla bla"
field2: "bla bla"
userData2 : {
href: "http://...."
field3: "bla bla"
field4: "bla bla"
userData3 : {
href: "http://...."
field5: "bla bla"
field6: "bla bla"
userData4: { //and so on with a real deep hierarchy
userData5 : {
href: "http://...."
field7: "bla bla"
field8: "bla bla"
userData6: { //and so on with a real deep hierarchy
}} ...}
正如你所看到的,这就像一个 expand=ALL 结果。它包含大多数用例不需要的大量信息。
是否有任何通用库可以支持“扩展”机制?我希望我的客户能够做 GET user + expand="userdata1.userdata2.. etc. 并且只获取相关数据而不是全部。
上面的这个例子并没有真正反映我服务器的状态,我有大量不同数量的复杂对象(即 userData3 可以包含 5 个复杂数据:UserData4、UserData5、UserData6 等。
我相信在没有任何通用解决方案的情况下实施是相当容易的,它会耗费大量时间,而且我没有奢侈品..
关于创建这样的通用机制的任何想法?也许需要使用 java.reflection ?我真的不希望我的代码中有很多 if-else \ 硬编码的东西,任何想法都会有所帮助!
谢谢!