用于Ruby on Rails中的RESTful服务的WADL / WSDL 2.0

时间:2009-07-08 19:33:51

标签: ruby-on-rails rest wsdl wadl

有没有办法在Ruby on Rails中发布RESTful方法所期望的参数?使用SOAP,我们可以使用WSDL,但是RoR是否为RESTful服务实现了WADL或WSDL 2.0? 编辑:我知道使用ActionWebService的基于SOAP的解决方案。我在引用相当于https://wadl.dev.java.net/

的RoR

4 个答案:

答案 0 :(得分:4)

是的,您的要求的解决方案是在rails中安装 Actionwebservice gem ,如果您使用rails 2.3.2并尝试使用以下命令安装Actionwebservice gem

第1步:

 $ gem install datanoise-actionwebservice --source http://gems.github.com

第2步:将gem添加到conf / environment.rb

 config.gem 'datanoise-actionwebservice', :lib => 'actionwebservice'

第3步:生成网络服务

 $ ./script/generate web_service  webservice_name

您可以在/ app / services

中看到生成的网络服务文件

第4步:修改您的控制器

class YourController < ApplicationController
     wsdl_service_name 'webservice_name'
     web_service_api webservice_nameApi
     web_service_scaffold :invocation if Rails.env == 'development'

 def add(name, value)
   Your.create(:name => name, :value => value).id
 end

end

第5步:修改app / services中的api类

class WebserviceNameApi < ActionWebService::API::Base
    api_method :add, :expects => [:string, :string], :returns => [:int]

end

第6步:您可以阅读wsdl文件

$ ./script/server
$ curl http://localhost:3000/controller/wsdl

答案 1 :(得分:1)

答案是“不”; Rails没有提供这样做的方法。 WSDL 2.0可以被任何人使用,更不用说任何人做REST了(尽管理论上它在某种程度上是可能的,但它对RESTful HTTP的支持非常有限;例如它不支持超媒体)。 WADL在REST社区中也有很强的接受性问题;除了Java Jersey框架之外,我不知道任何实现。

答案 2 :(得分:0)

您可以使用REST Describe & Compile基于WADL生成Ruby客户端。您可以在Google文档中找到关于它的非常详细的文档。

答案 3 :(得分:0)

实际上有一个实现 - 一个可以从Rails路由生成WADL的gem:https://github.com/austvik/wadlgen,但它有它的局限性。