gpt4 book ai didi

rest - 设计问题 : how to create a restful interface made out of multiple domain objects?

转载 作者:行者123 更新时间:2023-12-02 15:38:40 25 4
gpt4 key购买 nike

所以,我们从我们公司的 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
}

Person.groovy
      //the plugin exposes the class with this 
static expose = ['person']

String name
Address address
[...]

当调用“as JSON”方法时,编码器实际上作用于如何转换类。

所以现在,因为有了插件,我们可以做
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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com