- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我们从我们公司的 grails 开始,我们正在创建这个应用程序,它使用 ExtJS 作为前端,Grails 在后端。
因为 ExtJS 专门使用 JSON 来填充数据表等,所以我们面临着创建这些接口(interface)的挑战,这些接口(interface)将以一种安静的方式向 ExtJS 发送和接收 JSON 对象。
在考虑了我们的领域模型之后,我们选择了一个。很快,我们意识到系统中的某些表将由来自多个域对象的信息组成。
经过一番搜索,我们找到了 JSON RESTful API for GORM插件,它基本上为任何给定的域对象公开了一个 RESTful 接口(interface)。
这将我们带到了问题的重点。
在我看来,有两种方法可以继续。
1)为ExtJS中的每个数据表创建一个特定的 Controller ,该 Controller 将具有不同的 Action ,并且在每个 Action 中它将创建或接收JSon对象以对数据表使用的不同域对象进行CRUD。
在我看来,这将更耗时。无论如何,这是一个选择。
2)另一个选项是通过为我们要填充的数据表创建一个“复合”域对象来实现上述插件(该对象中的每个属性都是数据表中的一列)。在此之后,只需使用 JSON RESTful API for GORM 插件公开它,它基本上为我们处理了整个 CRUD 操作。
有没有一种方法可以在我们的域模型中创建一个我们想要的对象,而无需在后端实际创建更多的数据库表?
我相信我们走在正确的道路上,我们只需要专家的一点指导:)
提前致谢!
最佳答案
有趣的。
我最终使用了不同的方法,让我知道你的想法。
基本上,我们最终还是使用了这个插件:http://grails.org/plugin/json-rest-api公开域类并处理所有 CRUD 操作。
我们所做的是为每个类创建一个自定义 JSON 编码器,就像这样。
Bootstrap .groovy
[...]
JSON.registerObjectMarshaller(Person){
def returnArray = [:]
returnArray['id'] = it.id
returnArray['name'] = it.name
returnArray['street'] = it.address.street
return returnArray
}
//the plugin exposes the class with this
static expose = ['person']
String name
Address address
[...]
GET http://mydomain.com/api/person
我们得到一个 json 对象,其中包含来自 person 和其他类的信息,如下所示:
{"data":{"id":"1", "name":"Peter", "Spooner St"}}
关于rest - 设计问题 : how to create a restful interface made out of multiple domain objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5599628/
我是一名优秀的程序员,十分优秀!