使用grails创建/管理RESTful API的有效方法是什么?
我已经构建了我的第一个grails应用程序。我的URL映射是默认应用程序提供的:使用grails创建/管理RESTful API的有效方法是什么?,api,rest,grails,restful-authentication,Api,Rest,Grails,Restful Authentication,我已经构建了我的第一个grails应用程序。我的URL映射是默认应用程序提供的: static mappings = { "/$controller/$action?/$id?"{ constraints { // apply constraints here } } "/"(view:"/index") "500"(view:'/error') } Senario 我有一个名为ColorControll
static mappings = {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
}
Senario
我有一个名为ColorController
的控制器,具有操作save
和list
。它只是做了这样的事情:
def save () {
def colorInstance = new Color(params)
colorInstance.save(flush: true)
}
def list () {
[colorList: Color.list, colorTotal: Color.count()]
}
我想为这些操作构建一个简单的API
- 保存操作应接受JSON参数,并在记录保存时提供成功消息李>
- 列表操作应该以JSON的形式提供列表
- 我应该为api创建单独的URL映射吗?(例如
)http:////rest/controller/action
- 我应该为我的API制作一个单独的控制器吗
- 我正在使用spring安全插件进行身份验证。但在某个时候,我可能也想对restful api进行身份验证。有什么解决办法
- 如果我使用相同的控制器,我如何修改这些简单的操作来完成我所需要的李>
- “保存操作应接受JSON参数,并在records save”-save映射到POST RESTful时提供一条成功消息。它不是将JSON主体绑定到
,而是绑定到params
。为了访问JSON对象,您只需要在action方法中使用请求
JSONObject的request.JSON实例request.JSON
- “列表操作应以JSON的形式提供列表”-
操作映射到GET请求,您可以在list()
中以JSON的形式呈现映射,如下所示list()
Color
),而不应该关心底层的控制器
或操作
。服务器端逻辑应该从客户端抽象出来。URL映射是客户端用来作为请求形式的映射。在Color
资源的url映射中,我会有类似的内容/color/$id?(资源:“color”)
或
- 我应该为我的API制作一个单独的控制器吗?-取决于应用程序的设计方式。您还可以将上述控制器作为API。例如,目前我正在开发一个grails应用程序,它在前端使用了
,并以RESTful方式连接到grails应用程序。为了实现这一点,我使用了一个AngularJS
,它可以作为Angular的API。在同一个应用程序中使用RESTAPI的基本原理是,将来我们可以将底层服务公开给外部客户端,而不是应用程序本身中的RestClientController
客户端Angular
- 我正在使用spring安全插件进行身份验证。但在某个时候,我可能也想对restful api进行身份验证。有什么解决办法您也可以在这里使用Spring Security。在我的例子中,我正在使用插件,并通过使用插件的注释组件
来保护@Secured
控制器。我已经启用了自定义的
,以及与公司范围的LDAP和AD组交互的授权OAuth
- 如果我使用同一个控制器,我如何修改这些简单的操作来做我需要的事情。-我想你现在应该已经得到了这个问题的答案(在经历了我上面提到的那个问题之后)。我的观点是,
控制器
可以路由到适当的操作
类,这些类根据请求参数执行业务实现服务
//Action
def show(){
if(params.id){
colorService.getColor()
} else {
colorService.searchColor()
}
}
在上面的示例中,url映射将是
/color/123
或/color
。在前一种情况下,它将获得颜色
,在后一种情况下,它将搜索非常有用的颜色!!谢谢你的宝贵意见。顺便说一句,您在github上遇到过任何在grails应用程序中公开restful api的示例项目吗?您将在github中找到此类项目的数量。我现在在找你。如果你愿意,你可以参考。查看JsonRestApiUrlMappings
。
/color/$id?(controller: 'color'){
action = [GET: "list", POST: "save"]
}
//Action
def show(){
if(params.id){
colorService.getColor()
} else {
colorService.searchColor()
}
}