grails 查看插件_Grails –使用JAX-RS插件的RESTful Web服务

grails 查看插件

我讨论了有关RESTful体系结构的注意事项,以及如何使用 JAVA中的Jersey JAX-RS [JSR 311]构建RESTful Web服务 。 今天,我将讨论如何使用Grails框架构建RESTful Web服务。

GRAILs框架是提供端到端解决方案的平台,从头开始构建Web应用程序以提高直观的RIA Web应用程序。 Grails可能是您所有企业应用程序开发的一站式服务。 Grails是模块化的,因此您可以选择适合您的应用程序的模块。

Grails基于插件,倡导“约定优于配置”。 它提供了使用各种最新的插件(例如H2,JQuery和EHCache等)构建应用程序的平台。请参阅此处以获得对Grails的更多了解。

在Grails配置文件(即BuildConfig.groovy)中配置插件非常容易。 在开始构建RESTful Web服务之前,我们需要使用以下命令创建grail应用程序。

grails_apps> grails create-app TestWSRest
| Created Grails Application at D:\Demo\grail_app\ TestWSRest

上面的命令将创建具有初始应用程序开发所需的必要环境的TestWSRest应用程序。 创建grails应用程序后,我们必须按照以下步骤安装JAX-RS的RESTful插件

  1. 在BuildConfig.grovvy中添加JAXRS插件
plugins {
 compile ":jaxrs:0.8"
 }

在命令提示符处运行install plugin命令

D:\Demo\grail_app\ TestWSRest>grails InstallPlugin jaxrs

上面的命令会将Jaxrs插件安装到grails项目名称TestWSRest中

注意: JAXRS是用于grails的JSR 311实现插件

资源资源

由于RESTful Web服务基于面向资源的架构师。 我们必须创建将被映射到URL的资源,以通过HTTP访问这些资源。

上面的命令将创建UserResource.groovy和UserResourceTest.groovy

D:\Demo\grails_app\\TestWSRest>grails create-resource Users
| Created file grails-app/resources/testwsrest/UsersResource.groovy
| Created file test/unit/testwsrest/UsersResourceTests.groovy
package testwsrest
 class UserService {
 //Get list of users from DB
 def getUser() {
 return User.list()
 }
 //Create User in DB
 def addUser(User user){
 user.save()
 return user
 }
 }

上面的资源将映射http:// localhost:8080 / TestWSRest / api / users以使用HTTP GET方法访问方法getUsersRepresentation。 方法名称可以是任何东西,但为了更好,我们必须使用逻辑名称

运行应用程序

要启动该应用程序,请首先使用以下命令和以下URL运行Grails应用程序

grails run-app

浏览器现在应显示“ Hello Users”

使用Grails RESTful Web进行CRUD操作

为了在User中操作CRUD操作,请创建UserService类,该类将使用User域在数据库的User表中执行CRUD操作

首先,我们将创建UserService,它将对用户域User进行RDBMS处理。 在这里,我们将创建两个方法getUser获取用户列表,并创建addUser在数据库中插入用户记录

package testwsrest
 class UserService {
 //Get list of users from DB
 def getUser() {
 return User.list()
 }
 //Create User in DB
 def addUser(User user){
 user.save()
 return user
 }
 }

资源:

我们将修改现有的UserResource并添加带有@GET注释的getUser和带有@POST注释的createUser来处理GET和POST HTTP操作。

  • @Path将由用户定义资源的位置
  • @Consumes和@Produces分别定义消费和生产的内容类型。
  • XML转换器是将域对象转换为XML的软件包

依赖注入 :我们将使用Grail依赖注入通过仅在资源类内部声明服务类来将UserService注入UserResource。 Grails框架实习生使用Spring依赖项注入来自动注入服务。

package testwsrest

import grails.converters.XML
 import javax.ws.rs.Consumes
 import javax.ws.rs.GET
 import javax.ws.rs.POST
 import javax.ws.rs.Path
 import javax.ws.rs.Produces

@Path('/api/users')
 @Consumes(['application/xml','application/json'])
 @Produces(['application/xml','application/json'])
 class UsersResource {
 UserService userService// automatically inject(IOC) to UserResource

@GET
 String getUsers() {
 def xml =userService.getUser() as XML
 return xml
 }

@POST
 String createUsers(User user) {
 userService.addUser(user)
 return user as XML
 }
 }

测试中

package testwsrest
 import org.grails.jaxrs.itest.IntegrationTestCase
 import org.junit.Test

import static org.junit.Assert.*

class UsersResourceTests extends IntegrationTestCase {
 @Test
 void testPostAndGet() {
 def headers = ['Content-Type':'application/json', 'Accept':'application/xml']
 def content = '{"class":"testwsrest.User","username":"Sam","password":"Hill"}'
 def expected = '[<?xml version="1.0" encoding="UTF-8"?><user id="1"><password>Hill</password><username>Sam</username></user>]]'
 def User user=new User();
 user.setUsername("John")
 user.setPassword("john@")
 // create new User
 sendRequest('/api/users', 'POST', headers, content.bytes)
 assertEquals(200, response.status)
 assertEquals(expected, response.contentAsString)
 assertTrue(response.getHeader('Content-Type').startsWith('application/xml'))
 // get users
 sendRequest('/api/users', 'GET', headers)
 assertEquals(200, response.status)
 assertEquals("[${expected}]".toString(), response.contentAsString)
 assertTrue(response.getHeader('Content-Type').startsWith('application/json'))
 }
 }

以下是使用IntegrationTestCase的简单集成测试

使用脚手架的RESTful服务:

grails-jaxrs插件支持脚手架,以基于域类生成RESTful服务接口。 以下步骤说明了脚手架的用法

  1. 通过命令行创建域类
    1. D:\ Demo \ grails_app \\ TestWSRest>授予createCommand用户
    2. 使用JAXRS插件generateREso生成资源类
      1. D:\ Demo \ grails_app \\ TestWSRest> grails生成资源用户

上面的命令将基于用户域自动生成RESTful Web服务

结论

在本文中,我讨论了如何使用JAXS插件在Grails框架中创建RESTful Web服务。 您可以下载链接下载完整的源代码


翻译自: https://www.javacodegeeks.com/2013/07/grails-restful-webservice-using-jax-rs-plugin.html

grails 查看插件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值