`

Grails Web服务

阅读更多

 

Web服务

Web服务就是让你的web应用提供一套web API,通常用SOAPREST来实现。 .

1 REST

REST就本身而言不是一种技术,而是一种架构模式。is not really a technology in itself, but more an architectural pattern. REST非常简单,以普通XML或JSON作为通信机制,结合可以表现底层系统状态的URL形式和 HTTP方法如 GET, PUT, POST和 DELETE.

每一个HTTP方法映射到一个action,如用GET方法获取数据,用PUT方法创建数据,用POST更新数据等等。在这个意义上 REST非常适合 CRUD.

 

URL形式

要用Grails实现REST,第一步就是提供REST形式的URL映射 URL映射:

 

static mappings = {
   "/product/$id?"(resource:"product")
}

这就将URI /product 映射到 ProductController. 在controller内部每个HTTP方法,GET,PUT,POST和DELETE都映射到一个action上,如下表所示:

 

方法 Action
GET show
PUT update
POST save
DELETE delete

可以通过URL映射机制修改HTTP方法和URL的映射关系:

 

"/product/$id"(controller:"product"){
    action = [GET:"show", PUT:"update", DELETE:"delete", POST:"save"]
}

但是在这个例子中,Grails并不像前面使用过的resource 参数那样自动提供XML或JSON序列化,除非提供在URL映射中提供parseRequest 参数:

 

"/product/$id"(controller:"product", parseRequest:true){
    action = [GET:"show", PUT:"update", DELETE:"delete", POST:"save"]
}

 

XML序列化 - 读取

controller可通过Grails提供的 XML序列化机制 来实现GET方法:

 

import grails.converters.*
class ProductController {
        def show = {
                if(params.id && Product.exists(params.id)) {
                        def p = Product.findByName(params.id)
                        render p as XML
                }
                else {
                        def all = Product.list()
                        render all as XML
                }
        }
        ..
}

这里,如果参数中指定id,通过id 搜索Product 如果指定id的Product存在,则返回该Product,否则返回所有Product. 这样,如果访问 /products我们会得到所有的Product,如果访问/product/MacBook,我们只获取到一个MacBook记录.

 

XML序列化 - 更新

为支持PUTPOST 你可以使用 params 对象。Grails中params对象具有读取XML数据包的能力。如下面的XML数据包:

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<product>
        <name>MacBook</name>
        <vendor id="12">
                <name>Apple</name>
     </vender>
</product>

你可以通过在 数据绑定章节描述过的同样的方法,通过 params 对象来读取XML数据:

 

def save = {
        def p = new Product(params['product'])

if(p.save()) { render p as XML } else { render p.errors } }

在这个例子中,通过提取 params 对象中的 'product'对应的值,我们可以通过Product的构建器自动创建和绑定XML数据 。 注意这一行:

def p = new Product(params['product'])

这里我们不需要修改任何代码就可以以处理XML数据请求的方法处理表单提交。同样的方法也可以用来处理JSON请求.

 

如果需要对不同的客户端(REST,HTML等)提供不同的响应,你可以使用 content negotation

The Product object is then saved and rendered as XML, otherwise an error message is produced using Grails' validation capabilities in the form:

 

<error>
   <message>The property 'title' of class 'Person' must be specified</message>
</error>

2 SOAP

Grails通过 XFire 插件来支持SOAP。XFire插件使用流行的XFire SOAP协议栈,它允许你通过特定的expose属性将Grails的 services 作为SOAP服务提供:

 

class BookService {

static expose=['xfire']

Book[] getBooks(){ Book.list() as Book[] } }

WSDL文件可通过: http://127.0.0.1:8080/your_grails_app/services/book?wsdl获取

更多信息参考XFire插件的wiki 文档

3 RSS和Atom

Grails没有直接提供对RSS和Atom的支持. You could construct RSS or ATOM feeds with the render method's XML capability. 可以通过Grails Feeds插件来构建RSS和Atom。改插件使用流行的 ROME 库. 下面是简单使用这个插件的例子:

 

def feed = {
    render(feedType:"rss", feedVersion:"2.0") {
        title = "My test feed"
        link = "http://your.test.server/yourController/feed"

Article.list().each() { entry(it.title) { link = "http://your.test.server/article/${it.id}" it.content // return the content } } } }

分享到:
评论

相关推荐

    使用Grails快速开发Web应用

    ### Grails快速开发Web应用:知识点详解 #### Grails框架概览 Grails是一个基于Groovy语言构建的开源MVC(Model-View-Controller)Web开发框架,以其高效的开发速度和简洁的代码著称。其核心优势在于: 1. **快速...

    grails快速开发web

    ### Grails 快速开发 Web 应用程序 #### 一、Grails 概述 Grails 是一种基于 Groovy 的开源应用框架,用于简化 Web 应用程序的开发过程。它采用约定优于配置的原则,这使得开发者可以更快地创建功能丰富的 Web ...

    Grails企业web应用开发与部署

    Grails企业web应用开发与部署 grails webmail grails 服务器环境 ...

    Grails技术精解与Web开发实践.part2

    自己买的书,然后用扫描机扫描的,整个文件太大了,不能一次性上传上来,所以拆成3个part。 我自己学grails很想看这本书,结果网上没有,就自己去买了,然后共享给需要的人。 如果有什么问题请联系我下架。

    Grails技术精解与Web开发实践.part1

    自己买的书,然后用扫描机扫描的,整个文件太大了,不能一次性上传上来,所以拆成3个part。...我自己学grails很想看这本书,结果网上没有,就自己去买了,然后共享给需要的人。 如果有什么问题请联系我下架。

    Grails技术精解与web开发实践11-20章

    8. **RESTful Web服务**:Grails支持构建RESTful API,这部分可能会讲述如何设计和实现符合REST原则的服务,以及如何使用JSON或XML进行数据交换。 9. **持续集成与部署**:19-20章可能涉及到如何配置持续集成服务器...

    使用 Grails 快速开发 Web 应用程序

    《使用 Grails 快速开发 Web 应用程序》 Grails,一个基于Groovy动态语言的开源MVC框架,为Web开发提供了高效且简洁的解决方案。自2007年发布以来,Grails以其快速开发能力,降低了Web应用的复杂性,吸引了众多...

    grails开发

    Grails是一种基于Java平台的开源Web应用框架,它利用Groovy语言的强大特性和简洁语法,为开发者提供了一种高效、灵活的开发环境。本篇文章将深入探讨Grails开发的基础知识,帮助初学者快速掌握Grails的精髓。 1. **...

    Grails 1.1 Web Application Development

    5. **RESTful Web服务**:改进了RESTful Web服务的支持,使得创建RESTful接口更加容易。 #### 三、Grails的架构与核心组件 - **域类(Domain Class)**:用于定义应用中的业务实体,与数据库表相对应。 - **控制器...

    grails-web-url-mappings-2.5.4.zip

    Grails 2.5.4的URL映射还包含对RESTful服务的支持。通过简单的配置,你可以创建处理HTTP CRUD操作的映射,这对于构建API尤其有用。例如: ```groovy "/api/users"(resources: 'user') ``` 这将自动生成处理用户...

    Grails技术精解与web开发实践2-10章

    《Grails技术精解与Web开发实践2-10章》是针对Grails框架的一份珍贵资源,适合初学者及有经验的开发者深入理解并掌握Grails技术。这本书的章节涵盖了从基础到进阶的多个方面,旨在帮助读者全面了解和运用Grails进行...

    Grails——web开发应用

    Grails 是一个基于 Java 平台的开源Web开发框架,它旨在简化Web应用程序的构建过程。Grails 采用了敏捷开发的思想,遵循“约定优于配置”(Convention Over Configuration)和“不要重复自己”(Don’t Repeat ...

    Grails+快速开发+Web+应用程序.pdf

    ### Grails快速开发Web应用程序知识点解析 #### 一、Grails框架概述 - **定义**:Grails是一个基于Groovy语言构建的开源Model-View-Controller (MVC) Web开发框架。它旨在简化Web应用程序的开发流程,提高开发效率...

    Grails Grails Grails

    Grails 是一个基于 Groovy 语言的开源Web应用程序框架,它构建在Java平台之上,旨在简化开发过程并提高生产力。Grails 的设计深受Ruby on Rails的影响,提供了MVC(模型-视图-控制器)架构模式,允许开发者快速构建...

    Grails技术精解与Web开发实践.pdf

    - Grails的工作原理,包括其MVC结构、依赖注入、服务层、控制器层和视图层的实现方式。 - Grails的应用程序结构,介绍默认创建的应用项目包含的文件和文件夹结构。 - Grails的约定优于配置原则,讲解如何通过遵循...

    Grails权威指南 Grails权威指南

    7. **RESTful服务**:Grails支持创建RESTful API,这在当今的微服务架构中尤为重要。开发者可以轻松构建符合HTTP协议的API,实现前后端分离或者与其他系统集成。 8. **测试支持**:Grails提供了全面的测试工具,...

    grails中文入门简介

    文档涵盖了从安装、配置、Web开发、服务层、测试、国际化、安全到插件使用等多个方面的详细介绍,是Grails新手学习的宝贵资料。通过这份文档,开发者可以系统地学习Grails框架,并在实际开发中快速应用所学知识。

Global site tag (gtag.js) - Google Analytics