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