我开始为现有的JSF-webapp实现REST层(使用RESTEasy,使用Jettison提供程序)。由于Java REST层的教程非常基础(简单对象),因此我面临的问题是如何轻松地从客户端公开/消费现有的JPA实体关系。一个简单的“/ user”REST方法已经成功地给了我下面的输出,这是一个好的开始。但我的主要问题是 - 如何处理这种结构。通过REST使用这样的结构是否常见?
谢谢
用户实体的JSON示例:
{
"user": {
"id": ..,
"uuid": "1521ccad69ba4579bbe49e75181fefc1",
"image": "",
"contact": {
"id": ..,
"uuid": "8eb429dcca994834ae5c8cf07cba62a2",
"cellphone": "",
"city": "",
"country": "",
"email": "mail@foo.bar",
"fax": "",
"phone": 555,
...
},
"name": "...",
"account": {
"id": ...,
"uuid": "80b331f9e6644449bb3600b0e5145253",
"confirmed": true,
"profile": {
"id": ...,
"uuid": "e172bdcafe2645d7975852ca5685c98c",
"locale": "en",
"notifyMessage": false,
"notifyNews": true,
"notifyTask": true,
"timeZone": "Europe/Berlin"
},
"roleProfiles": {
"id": ..,
"uuid": "f1713758f3f2416faed3e68350f2d759",
"active": true,
"assemblies": [
{
"id": ..,
"uuid": "13d72449833a4eb0b5b4f62c729ee44f",
"image": "",
"commercialRegisters": [
123,
456
],
"contact": {
"id": ...,
"uuid": "bef3802297344e3c8c3619b6c91c345a",
"city": "",
"country": "",
...
},
"thumbnail": ""
},
{
...
}
],
},
"userName": "..."
},
"displayName": "...",
"firstName": "Foo",
"lastName": "Bar",
"salutation": "",
"title": ""
}
}
答案 0 :(得分:0)
您的Java类中的引用应该作为链接而不是值序列化为JSON。 这就是Spring REST的功能。 好消息是:那样你就有了一种懒惰的装载方式 不好的是客户需要额外的请求来获取引用的值。
我为此开发了一个完整的解决方案,但这是一项艰巨的工作。 客户端(在javascript中)为这些引用创建代理并根据需要解析它们。
我在demo.appdriver.com上有一个演示 在右上角,您会看到一个链接'REST API',点击它,您可以看到相当复杂的域模型的REST API。
现在您可以开始点击用户界面,创建,更改,删除等。 并查看客户端和服务器之间的流量。
希望它有所帮助!