REST和Flex

本文来自:http://www.insideria.com/2010/01/rest-and-flex.html

 

在这个指导文章里,我们开始应用REST和 Flex ,你是不是在询问,什么是REST,怎么使用REST啊?

 

REST是表述性状态转移(Representational State Transfer),可帮助你提供服务,通过XML与你的数据库沟通。不仅如此,你可以组合REST和RIA,开发WEB应用程序。实际上,它是一个可伸缩系统,让通信变得更为轻松。

 

REST的另外一个优势就是:它从功能上区分了客户端和服务器端的目标,这样你能以并行的方式工作,现在你最喜欢的客户端或服务器端技术,以开发应用程序。如果你使用不同的技术,如AJAX或 Flex 创建GUI,但是仍然使用同样的设备与数据库通信的话,对你也非常有帮助。REST基于HTTP标题栏,实际上所有从客户端到服务器端的通信都通过HTTP标题栏,如POST, GET, PUT和DELETE. 

 

这非常有趣,因为你只需调用一个特定的路径,并设定正确的标题栏,就可以创建,阅读,更新或删除(CRUD)记录。REST使用令牌认证,以安全地与和您的RIA或网站通信。有了令牌,你可以防止其它网站或应用程序调用你的服务。

 

如果你是一名 Flex 开发人员,你就非常清楚 Flex 不支持一些HTTP标题栏如PUT 或DELETE,因此我们将采用一个免费的资源库,称为as3httpclientlib , 它采用使用socket的操作(workaround)来解决这个 Flex 问题。

 

在开始编码前

 

在开始根据本指导文章进行操作前,你必须下载,并且配置好电脑,以使用Rails和Flex4。如果你的电脑已经配置好了,请跳到下一段。

 

如果你运行的是Mac OS X, 你就已经预装了Ruby;如果你运行的是Windows OS,你必须从 http://rubyforge.org/frs/?group_id=167 下载Ruby,并安装这个软件。

 

如果你想要测试一下,看看在你的操作系统上是否安装了Ruby,那在命令提示字元输入ruby –v。如果结果是“not found”,那么你就要下载并安装一个。

 

安装了Ruby之后,你可以下载Rubygems,它会帮助你轻松下载并安装所有的Ruby模块。 安装了RubyGems之后,你可以下载Rails, Mongrel和SQLite(如果终端是Mac OS X,使用以下代码行,如果是Windows,使用命令提示字元):

for RAILS:

sudo gem install

rails

for Mongrel:

gem install

Mongrel

for SQLite:

gem install

sqlite3-ruby



现在,我们来看下最后几步:

Rails是服务器端技术,我选择它通过数据库和REST来创建互动。实际上,有了Rails, 我们可以创建各种方法向客户端提供REST服务。为什么是Rails?因为我认为开始时,使用Rails非常简单,它采用的是OOP语言,所以你可以使用从Actionscript 3中学到的相同概念,以在Rails中检索。

 

Mongrel是一个HTTP服务器,Rails应用程序在运行,你可以在Mongrel网站了解有关Mongrel的更多信息。

 

最后,SQLite是一个免费数据库,使用起来非常快捷,它与你可以在Adobe AIR里发现内嵌的内容是一样的。SQLite的一个关键特点是:你的数据库只有一个文件,所以你可以轻松拖拽,移动数据到另外一个电脑上,或移动设备上。幸运的是,它是“名不符实的”。实际上,SQLite数据库可以储藏多达4GB的数据,如需了解更多有关SQLite的信息,请登陆官方网站。我建议您下载免费的SQLite Database浏览器,你可以轻松使用这个应用程序.

 

最后,你可决定在你的电脑上安装哪一个Ruby IDE;你可以选择Aptana standalone或eclipse plugin,如果你使用的是Mac OS X使用TextMate,如果你使用的是Win OS, 使用Visual Studio的Ruby in Steel(这个不是开源的)。

 

为客户端,你必须下载Flash Builder BETA (standalone或eclipse plugin),你可以在labs.adobe.com找到相应的连接。然后你要下载3httpclientlib,以使用REST, 该资源库也依赖于as3crypto库。

 

As3crypto是一个非常棒的资源库,用于加密和解密字符串数据。我常常用这个数据库来创建登陆表单(用Flash或Flex), 因为你可以向服务器端脚本发送加密数据。as3corelib是最受欢迎的AS3资源库之一。它包括许多功能,如JSON序列化,API, Image encoders, String 和Number utils等等。两个资源库都在as3httpclientlib中使用,从而解决Flex 问题,以使用DELETE 和 PUT headers。

 

在你下载完毕所有的文件后,我们就准备开始了。在这个教程中,你将使用REST和 Flex 做一个地址本。

RAILS部分 

 

当我第一次接触Rails时,我对这种语言留下了深刻的印象,因为编写起来非常简单,也非常强大。

 

第一步就是,创建数据库和各种方法提供REST服务。

 

打开你的终端或命令提示字元,创建并设置项目文件夹,运行这些代码行。

使用这几行代码,你就创建了使用 Flex 所需要的内容,很酷吧!

 

现在,你必须对Rails代码进行一些改变,以应对可能在开发过程中出现的问题。不过首先,让我解释下这五行代码。

 

用第一行代码,你创建了Rails应用程序的一个骨架。实际上,你会找到用来安装Rails文件的文件夹。

 

使用第二行代码,你可进入rails文件夹;使用第三行代码,创建数据库环境,特别是创建三个数据库,一个用于开发范围,一个是“生产”(production),一个是测试。

 

Rake是一个由ruby编写的build工具,包含预装任务库,用户可用来让Ruby自动工作。如需了解有关rake的更多信息,请登陆 http://rake.rubyforge.org/

 

在本例中,你使用Rake创建数据库。如果你愿意,你可使用之前我提到的SQLite Database浏览器在可视化模式里创建(可从sourceforge下载)。

 

在脚本文件夹里,你调用generate scaffold在Rails里创建MVC构架,这样你可以创建读取数据库的REST。脚手架(scaffolding)是一种方法,用来构件数据库支撑的软件应用程序,使用一些特定框架。在本例中,使用Ruby,你创建了一切,而使用的脚手架生成创建了与数据库互动所需要的一切。

最后一行代码从模块转移到SQLite开发数据库。如果你想看看Rails是怎样实现这一切的时候,看看rails>db>migrate文件夹里的临时文件。

 

现在,检测你的配置,在你的终端输入这行代码或命令提示字元

 

./script/ server

 

当你按下Enter键,你就打开了Mongrel,你可打开WEB浏览器,登陆Enter轻松进行检测, 如果进展顺利,则你可以看到:

如果你的Mongrel正在运行,那么继续,更改Rails里的一些代码行。

 

首先,打开你在rails>app>controllers文件夹里找到的address_books_controller.rb,修改创建函数,这样所有数据会从数据库中返回:

我对原Catalyst文件进行了几个修改,添加了"Create New", 更换"Delete" 和 "Save" 按钮。 我根据项目偏好,采用了Spark主题。然而,这些更改是用来修定Catalyst项目的,因为现在,你可使用Catalyst创建一个项目,并使用Flash Builder修改,但是你不能修改在Catalyst里用Catalyst构件的一个项目。

 

在确定了MXML中的GUI后,你可以开始创建MainGroupView文件,通过扩展Flex 4框架的GROUP类,在MXML文件的主节里使用它,该文件将与MXML文件互动。在这个类里,你定义:

从数据库获取所有数据的方法;

从数据库删除一名人员信息的方法;

修改一名人员信息的方法;

向数据库添加一名人员的方法

 

在我们写下这些方法前,你必须知道REST是怎样工作的,这个表格显示了怎么使用REST完成这一切;

 

获取所有是语句 -http://localhost:3000/address_books.xml (HTTP header: GET)

在特定记录里检索数据 -http://localhost:3000/address_books/1.xml (HTTP header: 

修订记录 -http://localhost:3000/address_books/1.xml (HTTP header: PUT,并传递新数据bytearray,以储存在数据库中)

删除一个记录 -http://localhost:3000/address_books/1.xml (HTTP header: DELETE) 

创建新的记录 -http://localhost:3000/address_books.xml (HTTP header: POST,并传递新的数据XML,以储存在数据中心)

 

在这个样例中,你将使用HTTPService类和as3httpclientlib资源库,以了解这些不同的方法是怎样在 Flex 里与REST一起发挥作用的。显然,如果你仅采用HTTPService类,你不能使用PUT和DELETE标题栏,但是你可以通过as3httpclientlib资源库解决这个问题。

 

当我们的应用程序启动时,你可以用保存在数据库中的数据填充列表组件(如果你想要填充数据库,使用Sqlite Database Browser或通过使用./script/console通过终端或提示符启动的 Rails console 进行填充。在本范例中,我们将使用HTTPService请求所有数据。

 

你可使用函数callRestService通过HTTPService请求数据,它使用同样的HTTPService 变量,如果请求所有数据,一个记录或其它,仅需要改变路径。

 

此后,你可创建使用as3httpclientlib的更新方法。

 

有了httpclient变量,你必须确定URL,向REST服务发出bytearray数据。createXMLContent() 函数检索 Flex 格式中的所有的数据,并为记录更新或创建XML。注意,HttpClient变量请求URL变量,而不是一个简单的URLRequest, 你可在as3corelib资源库中找到这个对象。

 

最后,你可添加DELETE方法。

 

在这个函数中,我们使用httpclient对象del方法,而不是PUT方法(曾被用来更新数据库中的记录),删除个人信息。遵循下面同一过程:

确定正确的路径;

如果方法要求,传递数据;

当服务器回复你的请求时,监听。

 

同样,如果你使用HTTPService 对象或HttpClient对象

 

你可从这个链接下载最终样例。

 

 

最后的一些思考:

 

我想,REST是一个非常有趣,也非常简易的与服务器端通信的方法。我希望,在 Flex 或FLASH的下一个版本里,它们会解决标题栏问题,让我们可以在使用REST的时候,不需要额外的数据库。现在,as3httpclientlib是这个问题的解决方案。

 

Flash Builder 4 正式版下载地址:http://g.csdn.net/5128184



  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值