Rails框架技术讲座:创建Rails框架的网络服务(Web Service)

Posted by cnruby Wed, 08 Mar 2006 18:14:00 GMT

Rails框架技术讲座:创建Rails框架的网络服务(Web Service)

目录

 (一)系统环境:

  1. 软件语言 Ruby 1.8.2
  2. 软件框架 Rails 1.0.0
  3. 开发编辑工具 Notepad2
  4. SQLite 3.3.3
  5. SQLite-Ruby 1.1.0
  6. SQLite 3.x的可视化工具:SQLite Database Browser

 (二)前提条件:

  1. 我们的工作目录为d:\works_rails。
  2. 我们需要一个浏览器,如FireFox,或者Flock
  3. 讲座"创建连接数据库SQLite 3.x的Rails网络应用软件"是本讲座的基础。

 (三)目的:

  1. 借助于Action Web Service,创建和使用Rails框架的网络服务(Web Service)。
  2. 我们创建项目的完整代码 web_service.zip

 (四)解决方案:

  1. 我们根据讲座"创建连接数据库SQLite 3.x的Rails网络应用软件"的方法:
    • 来创建一个项目名称为web_service;
    • 来创建开发、测试和产品三个数据库,它们的名称分别为webs_dev、webs_tst和webs_prd;
    • 来修改我们Rails框架连接数据库SQLite的配置文件D:\works_rails\web_service\config\database.yml
  2. 利用Rails框架的自动代码生成工具:
    • 来创建为我们网络服务提供数据的模型Lesson,其命令如下:
      ruby script\generate model Lesson

    • 来创建网络服务API定义类LessonServiceApi和实现网络服务API的控制器类LessonServiceController的类框架代码,其命令如下:
      ruby script\generate web_service LessonService find_lesson find_all_lessons

      从中我们得到二个重要文件lesson_service_api.rb和lesson_service_controller.rb。下面我们说明和修改它们。
  3. 我们首先考虑我们的网络服务要做什么。假定我们可以让用户获取表lessons的所有记录或者按id寻找。
  4. 修改文件 environment.rb,为了我们的中文显示。
  5. 创建网络服务API定义类,告诉客户端用户如何调用我们的网络服务。
    lesson_service_api.rb
  6. 创建实现网络服务API的类,这是为网络服务提供的一种实现。
    lesson_service_controller.rb
  7. 测试一下我们网络服务是否正常,我们在浏览器地址栏中输入:
    http://localhost:3000/lesson_service/service.wsdl
    我们看到如下图所示,说明一切正常:

    浏览器访问文件顺序为:
       lesson_service_controller.rb
       lesson_service_api.rb
       lesson.rb
  8. 最后,我们来使用这个网络服务。正如上述,我们可以通过一个Ruby客户端程序 client_lesson.rb 来获取表lessons数据记录,下面执行该程序,其命令如下:
    client_lesson.rb
    或者
    client_lesson.rb > results.txt

    文件client_lesson.rb编码最好使用utf-8。
    我们用Notepad2来打开文件results.rb:

 (四)视听教学:

  1. 喜道技术日记数字广播Beta RSS: 
    http://www.hhtong.com/blog1/files/rails.rss
  2. 如何利用免费Apple iTunes收听"喜道技术日记数字广播"?
    下载软件:http://www.apple.com/itunes/download/
    安装软件:iTunes
    收听喜道技术日记数字广播Beta:菜单| 高级(A)| 订购Podcast(P)...| 输入 http://www.hhtong.com/blog1/files/rails.rss
  3. 德国之声中文数字广播RSS:
    http://rss.dw-world.de/xml/podcast_radio_china

 (五)必须注意的问题:

  1. 为什么我们在上面的DOS-Shell窗口看到乱码?
    因为我们的文件client_lesson.rb编码是utf-8,所以标题文字是乱码。另外,从服务器传过来的内容编码也是utf-8。如果我们的文件client_lesson.rb改为使用编码ANSI(中文需要重新输入)的话,那么我们可以看到:

    注意,我使用的操作系统是德文。
  2. 为什么我们会出现如下图片?

    这个说明我们没有修改文件 environment.rb

 (六)参考资料:

  1. Rails框架网络服务的基本概念:
    http://manuals.rubyonrails.com/read/chapter/67
  2. Rails框架Action Web Service API:
    http://rails.rubyonrails.com/files/vendor/rails/actionwebservice/README.html
  3. 网络服务实例:
    http://www.mindspring.com/~eric_rollins/rails/DwarvesOnRails.html


Posted in  | Tags  | 2 comments | no trackbacks

Trackbacks: 0

Use the following link to trackback from your own site: http://www.hhtong.com/blog1/articles/trackback/51

Comments: 2

Leave a response | RSS feed for this post

  1. # ken said 12 days later:
    Hi,你好 下载zip文件后运行出现找不到rhtml模板错误,不知道应该怎么配置 Template is missing Missing template ./script/../config/../app/views/lesson_service/wsdl.rhtml
  2. # /usr/tmp said 28 days later:
    You have to create a database for it to work.

Leave a response

Toggle website and email fields