2

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

4

4 回答 4

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 中看到生成的 webservice 文件

第四步:修改你的控制器

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
于 2009-07-09T05:10:39.073 回答
1

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

于 2010-01-04T21:01:59.213 回答
0

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

于 2010-01-28T10:25:04.543 回答
0

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

于 2013-04-15T09:37:15.043 回答