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

发布于 2024-07-26 05:59:57 字数 258 浏览 7 评论 0原文

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

Is there any way of publishing the parameters expected by the RESTful methods in Ruby on Rails? Using SOAP, we can use WSDL, but does RoR implement WADL or WSDL 2.0 for RESTful services?
Edit: I am aware of a SOAP based solution using ActionWebService. I was refering to a RoR equivalent of https://wadl.dev.java.net/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

悲凉≈ 2024-08-02 05:59:57

是的,满足您要求的解决方案是在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中看到生成的Web服务文件

第4步:< /strong> 修改你的控制器

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

Yes , Solution for your requirement is installing a Actionwebservice gem in rails , If your using rails 2.3.2 and try installing the Actionwebservice gem using the following command

Step 1 :

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

Step 2 : Add the gem to the conf/environment.rb

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

Step 3 : Generate a webservice

 $ ./script/generate web_service  webservice_name

you could see the generated webservice files in /app/services

Step 4 : Modify your controller

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

Step 5: Modify your api class in app/services

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

end

Step 6 : You can read the wsdl file

$ ./script/server
$ curl http://localhost:3000/controller/wsdl
铁轨上的流浪者 2024-08-02 05:59:57

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

The answer is "No"; Rails does not provide a way to do this. WSDL 2.0 is arguably used by nobody, let alone by anybody doing REST (even though it's theoretically possible to a certain degree, its support for RESTful HTTP is very limited; e.g. it doesn't support hypermedia). WADL has strong acceptance problems within the REST community, too; with the exception of the Java Jersey framework, I'm not aware of any implementation.

用心笑 2024-08-02 05:59:57

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

You can generate Ruby clients based on your WADL using REST Describe & Compile. You can find very nice detailed documentation about it in Google Documents.

余生共白头 2024-08-02 05:59:57

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

Actually there is one implementation - a gem which can generate WADL from Rails routes: https://github.com/austvik/wadlgen, but it has it's limitations.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文