WADL/WSDL 2.0 for RESTful services in Ruby on Rails

user135193 picture user135193 · Jul 8, 2009 · Viewed 7.4k times · Source

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/

Answer

Srinivas M.V. picture Srinivas M.V. · Jul 9, 2009

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