首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计问题:如何创建由多个域对象组成的restful接口?

设计问题:如何创建由多个域对象组成的restful接口?
EN

Stack Overflow用户
提问于 2011-04-09 03:00:59
回答 2查看 268关注 0票数 0

因此,我们从公司的grails开始,创建这个使用ExtJS作为前端和Grails作为后端的应用程序。

由于ExtJS专门使用JSON填充数据表等,因此我们面临的挑战是创建这些接口,以restful方式向ExtJS发送和接收JSON对象。

在仔细考虑了我们的域模型之后,我们选择了一个。很快,我们意识到系统中的一些表将由来自多个域对象的信息组成。

经过一番搜索,我们找到了JSON RESTful API for GORM插件,它基本上公开了任何给定域对象的RESTful接口。

这就引出了问题的要点。

在我看来,有两种方法可以继续下去。

1)为ExtJS中的每个数据表创建一个特定的控制器,该控制器将具有不同的操作,并且在每个操作中它将创建或接收JSon对象,以在数据表使用的不同域对象上执行CRUD。

在我看来,这会更耗时。不管怎样,这是一种选择。

2)另一种选择是通过创建一个特定于我们想要填充的datatable的“复合”域对象(此对象中的每个属性都是datatable中的一列)来实现上述插件。在此之后,只需使用用于GORM插件的JSON RESTful API公开它,该插件基本上会为我们处理整个CRUD操作。

有没有一种方法可以在我们的域模型中创建一个像我们想要的对象,而不需要在后端实际创建更多的数据库表?

我相信我们走在正确的道路上,我们只需要专家的一点指导:)

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-11 23:41:59

有意思的。

我最终使用了一种不同的方法,让我知道你的想法。

基本上,我们最终确实使用了这个插件:http://grails.org/plugin/json-rest-api来公开域类,并处理所有的CRUD操作。

我们所做的是为每个类创建一个自定义的JSON编组程序,如下所示。

Bootstrap.groovy

代码语言:javascript
复制
[...] 
        JSON.registerObjectMarshaller(Person){ 
                def returnArray = [:] 

                returnArray['id'] = it.id 
                returnArray['name'] = it.name 
                returnArray['street'] = it.address.street 

                return returnArray 
        }

Person.groovy

代码语言:javascript
复制
      //the plugin exposes the class with this 
       static expose = ['person'] 

       String name 
       Address address 
[...] 

当调用"as JSON“方法时,封送处理程序实际上会根据类的转换方式进行操作。

现在,由于有了这个插件,我们可以

GET http://mydomain.com/api/person,我们得到了一个json对象,它包含来自person和其他类的信息,如下所示:

代码语言:javascript
复制
{"data":{"id":"1", "name":"Peter", "Spooner St"}} 

唯一的问题是,如果可能的话,我们现在必须弄清楚如何通过更新或创建来更新街道地址。

有什么想法?

票数 1
EN

Stack Overflow用户

发布于 2011-04-10 03:10:52

在您的例子中,我建议您创建一组Command对象和控制器来处理它们。这将优雅地考虑到你的“复合”方法。

Command object是一个类,它拥有域对象所具有的所有很酷的验证和数据绑定功能,但没有直接的持久性。

要查看的链接:

Command Objects

JSON Responses

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5599628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档