论坛首页 编程语言技术论坛

与Rails REST亲密接触

浏览 12356 次
该帖已经被评为良好帖
作者 正文
   发表时间:2006-12-13  
Rails 1.2发布,其中最受瞩目的就是REST(Representational State Transfer)。
Rails REST特性可以让Web服务技术用平台独立或编程语言独立的方式相互通信,各个不同应用程序之间的远程过程调用从来都是相当麻烦,今天试用了一下REST,相比SOAP 和 WSDL 的确非常简洁好用。现在能够领会DHH在Rails的演讲中说的:“我不认为Rails应该向外部世界屈服,恰恰相反,Rails正在有力地让外部世界向我们屈服。”这是狂,不过DHH也有资格狂!

下面开始试用REST.

1.建一个friends的表(不废话mysql内容)

2.运行ruby script/generate scaffold friends,生成脚手架代码(不废话rails开发最基本的东东)

3.修改friends list函数改为:
def list
  @friends = Friends.find_all
     respond_to do |wants|
     wants.html
     wants.xml { render : xml => @friends.to_xml }
 end  


respond_to接受wants请求,根据不同请求返回结果

4.输入测试代码。test.rb

require 'net/http'
Net::HTTP.start('localhost', 3001) do |http|
  response = http.get('/friends/list', 'Accept' => 'text/xml')

  #Do something with the response.

  puts "Code: #{response.code}" 
  puts "Message: #{response.message}"
  puts "Body:\n #{response.body}"
end


注意Accept的定义是'text/xml',Rails将根据请求将xml发送给用户,缺省是rhtml的缺省显示。

5.运行ruby test.rb

就得到XML结果。REST继承Rails的风格,世界如此简单!

Rails 路由器根据 URL 模式把请求路由给控制器,
比如friends表的list查询就是http://localhost:3001/friends/list把list操作发送给通过控制器friends,得到结果。直接用TCP/IP 命名就可以定位资源。

用 HTTP 查询和操纵这些资源,Rails根据不同的HTTP ACCEPT头部来判断用户需要的数据,在控制器friends内,list可以根据不同的请求返回对应的结果。

使用基于文本的标准消息格式(例如 XML 或 HTML)来构造数据,Rails用一个to_xml来构造XML数据。

可以通过curl来熟悉HTTP,一般Unix系统都自带curl,文后我附带了一个curl widnows版本的程序,或者去http://curl.haxx.se/下载一个相应版本的。

参考经典REST文章:
http://www-128.ibm.com/developerworks/cn/java/j-cb08016/index.html
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics