一个简单的REST实例

首先用ruby script/generate migration create_table_friends创建一个migration文件,
写入以下代码:


 
  1. class  CreateTableFriends < ActiveRecord::Migration  
  2.   def   self .up  
  3.   create_table :friends   do   |t |  
  4.       t.column :first_name:string   
  5.       t.column :last_name:string   
  6.       t.column :phone:string:limit =>12  
  7.       t.column :email:string   
  8.   end   
  9.   end   
  10.   
  11.   def   self .down  
  12.   drop_table :friends   
  13.     
  14.   end   
  15. end   


运行: rake migrate
生成相应的数据表friends
利用ruby script/generate scaffold friends生成一个支架,可以通过:http://127.0.0.13000添入几条测试数据。

修改控制器中的list代码:

ruby 代码
 
  1. def  list  
  2.   #@friends_pages, @friends = paginate :friends, :per_page => 10   
  3.   @friends =Friend.find( :all )  
  4.   respond_to do   |wants |  
  5.      wants.html  
  6.      wants.js  
  7.      wants.xml{render :xml => @friends .to_xml}  
  8.   end   
  9. end   


这个时候我们可以在浏览器中输入:http://127.0.0.1:3000/friends/list/index.xml 你就可以查看到相应的数据信息,它是以xml形式显示的。

这样我们就完成了简单的一个相当于服务器端的功能,接下来我们就要来实现我们的客户端,我们可以直接通过ruby代码来调用,也可以再建一个rails应用来调用。我们分别给出:
1.

ruby 代码
 
  1. require 'net/http'  
  2.   
  3. Net::HTTP.start('localhost', 3000) do   |http |  
  4.   response = http.get('/friends/list', 'Accept' => 'text/xml')  
  5.   
  6.   #Do something with the response.   
  7.   
  8.   puts "Code: #{response.code}"   
  9.   puts "Message: #{response.message}"   
  10.   puts "Body:\n #{response.body}"   
  11. end   


运行以后输出的结果是:


 
  1. Code: 200  
  2. Message: OK  
  3. Body:  
  4.  <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  5. < friends >   
  6.   < friend >   
  7.     < email > mloki@124.com </ email >   
  8.     < first-name > &#39532; </ first-name >   
  9.     < id   type = "integer" > 3 </ id >   
  10.     < last-name > &#29702;&#20891; </ last-name >   
  11.     < phone > 0511-8791837 </ phone >   
  12.   </ friend >   
  13. </ friends >   


我们可以看到中文字条无法显示。

2.
在model中建立两个rb文件:

friends_resource.rb

 
  1. class  FriendsResource < ActiveResource::Base  
  2.   self .site = 'http://localhost:3000'  
  3. end   

friend.rb

ruby 代码
 
  1. class  Friend < FriendsResource  
  2.   self .site += '/friends/list'  
  3. end   


通过ruby script/generate controller getrest生成一个控制器,其中写一个index函数,实现如下:

ruby 代码
 
  1. def  index  
  2. @f =Friend.find( :all )  
  3. end   


建立相应的template文件,通过iterate我们就就可以把这个列表中所有的friend的相应属性输出。

注:论坛里好多同学说中文问题,其实只要做以下几件事,就可以很好的解决中文问题:

  1. 在创建数据库的时候,设定其编码为:utf-general-ci
  2. 在datatbase.yaml中设定:encoding: utf8
  3. 最后一点就是把编辑器的编码改为utf-8就可以了(我用的是eclipse,可以实现这个功能的)

我希望坛子上的高手来实现用客户端删除、更改和创建friend。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值