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

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

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

是的,您的要求的解决方案是在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步:生成Web服务

  $ ./script/generate web_service webservice_name 

你可以在/ app / services中看到生成的webservice文件

第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 

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

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