设计问题:如何创建由多个域对象组成的restful接口?
因此,我们从公司的grails开始,我们正在创建这个应用程序,它使用ExtJS作为前端,使用grails作为后端 因为ExtJS只与JSON一起工作以填充数据表等,所以我们面临着创建这些接口的挑战,这些接口将以restful方式向ExtJS发送和接收JSON对象 在仔细考虑了我们的领域模型之后,我们确定了一个。很快,我们意识到系统中的一些表将由来自多个域对象的信息组成 经过一番搜索,我们找到了这个插件,它基本上为任何给定的域对象公开了一个RESTful接口 这就引出了问题的要点 在我看来,有两种方法可以继续 1) 为ExtJS中的每个数据表创建一个特定的控制器,这些数据表将具有不同的操作,并且在每个操作中,它将创建或接收JSon对象,以便对数据表使用的不同域对象执行CRUD 在我看来,这将更加耗时。无论如何,这是一个选择 2) 另一个选项是通过为我们要填充的datatable创建特定的“复合”域对象(此对象中的每个属性都是datatable中的一列)来访问上述插件。在这之后,只需使用JSON RESTful API for GORM插件将其公开,该插件基本上为我们处理所有CRUD操作 甚至有没有一种方法可以创建一个我们想要的域模型中的对象,而不需要在后端实际创建更多的数据库表 我相信我们走的是正确的道路,我们只需要专家的一点指导:)设计问题:如何创建由多个域对象组成的restful接口?,rest,grails,gorm,Rest,Grails,Gorm,因此,我们从公司的grails开始,我们正在创建这个应用程序,它使用ExtJS作为前端,使用grails作为后端 因为ExtJS只与JSON一起工作以填充数据表等,所以我们面临着创建这些接口的挑战,这些接口将以restful方式向ExtJS发送和接收JSON对象 在仔细考虑了我们的领域模型之后,我们确定了一个。很快,我们意识到系统中的一些表将由来自多个域对象的信息组成 经过一番搜索,我们找到了这个插件,它基本上为任何给定的域对象公开了一个RESTful接口 这就引出了问题的要点 在我看来,有两种
提前谢谢 在您的情况下,我建议创建一组命令对象和控制器来处理它们。这将优雅地允许您的“复合”方法 是一个类,它具有域对象所具有的所有酷验证和数据绑定功能,但没有直接持久性 查看链接: 有意思 我最终采用了不同的方法,让我知道你的想法 基本上,我们最终使用了这个插件:公开一个域类并处理所有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
[...]
Person.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
[...]
封送拆收器实际上作用于调用“as JSON”方法时如何转换类
现在,由于这个插件,我们可以
GET
我们得到一个json对象,它包含来自person和其他类的信息,如下所示:
{"data":{"id":"1", "name":"Peter", "Spooner St"}}
唯一的问题是,如果可能的话,我们现在必须找出如何通过更新或创建来更新街道地址
想法 有趣的。。。让我看看。我在答案中提出了不同的解决方案,让我知道你的想法。