WEB开发网
开发学院软件开发Java 使用 Grails 构建富 Internet 应用程序,第 1 部分... 阅读

使用 Grails 构建富 Internet 应用程序,第 1 部分: 使用 Grails 和 Flex 构建 Web 应用程序

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: Story 服务有 3 个操作,首先,使用 Grails 构建富 Internet 应用程序,第 1 部分: 使用 Grails 和 Flex 构建 Web 应用程序(5),您可以创建一则新的新闻,其次,让他人可以调用它,Grails 让 Web 服务的创建变得非常简单 — 它不过是

Story 服务有 3 个操作。首先,您可以创建一则新的新闻。其次,有一个通过新闻 ID 对其好坏进行投票的操作。无论那种情况,您都记录了一些日志。Grails 使得日志记录非常容易 — 仅需使用隐式日志对象和普通的 log4j 样式的方法:log.debug、log.info、log.error 等等。使用 Story 实例上的 save 方法保存(或插入和删除)这则新闻。您要注意如何通过检测新闻实例的属性错误来检查错误。例如,如果新闻所需的字段的值缺失,它将作为 story.errors 的一部分显示出来。最后需要注意的是,这个服务是事务性的。这将告诉 Grails(和 Spring)使用现有的事务(如果已经存在的话),或在调用这些操作时创建一个新的事务。这对投票操作十分重要,因为在这些操作中您必须先从数据库读取新闻,然后再更新一个列。现在已经创建了基本的业务服务,您可以围绕它们创建一个 Web 服务,以将它们公开为 API,如下所示。

公开 API

作为开发人员,我们通常认为 API 是为供其他开发人员调用而编写的代码。在面向服务架构中,这仍然是正确的。不过这个 API 不是 Java 接口或类似的东西;它是一个 Web 服务签名。Web 服务公开 API,让他人可以调用它。Grails 让 Web 服务的创建变得非常简单 — 它不过是 Grails 应用程序中的另一个控制器。清单 4 给出了应用程序的 API。


清单 4. API 控制器

import grails.converters.* 
 
class ApiController { 
  // injected services 
  def searchService 
  def storyService 
   
  // set the default action 
  def defaultAction = "stories" 
 
  def stories = { 
    stories = searchService.list() 
    render stories as XML 
  } 
   
  def submit = { 
    def story = new Story(params) 
    story = storyService.create(story) 
    log.info("Story saved story="+story) 
    render story as XML 
  } 
   
  def digg = { 
    def story = storyService.voteFor(params.id) 
    render story as XML 
  } 
   
  def bury = { 
    def story = storyService.voteAgainst(params.id) 
    render story as XML 
  } 
} 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:使用 Grails 构建

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接