欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

与Rails REST亲密接触 RailsRESTXMLRubyMySQL 

程序员文章站 2024-01-12 08:02:58
...
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