Ruby on RailsのRESTfulメソッドで期待されるパラメーターを公開する方法はありますか?SOAPを使用するとWSDLを使用できますが、RoRはRESTfulサービスにWADLまたはWSDL 2.0を実装しますか?編集:ActionWebServiceを使用したSOAPベースのソリューションを知っています。https://wadl.dev.java.net/に相当するRoRを参照していました
4 に答える
はい、要件の解決策は、レールにActionwebservice gem をインストールすることです。レール 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
生成された Web サービス ファイルは /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
答えはノーだ"; Rails はこれを行う方法を提供していません。WSDL 2.0 は、REST を実行する人はおろか、誰も使用していないことはほぼ間違いありません (理論的にはある程度可能ですが、RESTful HTTP のサポートは非常に限られています。たとえば、ハイパーメディアをサポートしていません)。WADL は、REST コミュニティ内でも大きな受け入れ問題を抱えています。Java Jersey フレームワークを除いて、私は実装を認識していません。
REST Describe & Compileを使用して、WADL に基づいて Ruby クライアントを生成できます。Google Documents で、それに関する非常に詳細なドキュメントを見つけることができます。
実際には実装が 1 つあります。Rails ルートから WADL を生成できる gem: https://github.com/austvik/wadlgenですが、制限があります。