Railsの - 別のアプリケーションのSOAPインタフェースを使用
-
23-09-2019 - |
質問
私は、純粋な、働く、Railsアプリケーションを持っています。
私は今、それが他のアプリケーションとの通信( Sympaのの)を開始する必要があります。このアプリケーションが公開することが公開A SOAPインタフェースに、それは私がそれを(使用しようという意味がありますので、コマンド・ライン・インターフェース)不完全である。
私は従うべき手順?
宝石/プラグインは、私が使うべきか?
ん、誰もがチュートリアル/例が働いている?
私は、多かれ少なかれ一般的なSOAPの概念を理解し、私は前にSOAPを使用したことがありませんよ。私はRESTを理解します。
解決
編集:これは、レール2.xのの時代遅れの回答デートですより多くの存在の回答については、私は railscast#290 のを見てすることをお勧めいたします。私は誰かがまだいくつかの理由のためのレール2.xのを使用している、とライアンベイツが言う適用することはできません場合には、ここでこの答えを残しています。
私は今、いくつかの日のためにこれで戦ってきたと私は私が解決策を見つけた自分自身だと思います。
私はSOAPの相互作用のために見つけることができることを最も簡単な、最も活発な宝石は、サボンに呼ばれています。
はそれはルビー自体で動作するようになっています。ここでは、Railsのとそれを使う方法についてのクイックツアーです:
宝石をインストールします。最も簡単な方法は、編集のconfig /環境にあると
を追加config.gem "savon"
その後、と
実行rake gems:install
このカップルより多くの宝石と一緒にサボンをインストールする必要があります。
次に、あなたのapp/models/
ディレクトリにクラスを作成します(これは、ActiveRecordのサブクラスであるためにあなたのモデルのディレクトリ上の普通のクラスを持っていません)。
、あなたは遠くXMLから可能な限り滞在したいと思うでしょう。あなたはこのようなクラスを作成することによって、そうすることができます:
class MyWebservice
WSDL = "http://www.theWebSiteWithAService.com/wsdl"
def self.client
@@client ||= Savon::Client.new(WSDL)
end
def self.soap_actions
return client.wsdl.soap_actions
end
def self.invoke(action, parameters)
response = client.send(action) { |soap| soap.body = parameters }
return response.to_hash
end
end
あなたは、ほとんどのメソッドを呼び出すためにそれを使用することになります。あなたが呼び出すことができるようになる方法の種類は、「他のサイトには、」提供するサービスに依存します。 :create_monkey
、:destroy_monkey
&:list_monkeys
- の3つのアクションが利用可能であることを想像してみましょう。
MyWebservice.soap_actions
=> [:create_monkey, :destroy_monkey, :list_monkeys]
create_monkeyを:これで呼び出したいことを想像してください。まず、あなたはそのコールのために必要とされるパラメータを知る必要があります。これを見てするのに最適な場所は、WSDLファイルそのものです。あなたはこのようなものが表示されるはずです。
<message name="create_monkey_request">
<part name="name" type="xsd:string"/>
<part name="hair_color" type="xsd:string"/>
</message>
<message name="create_monkey_response">
<part name="status" type="xsd:string"/>
</message>
name
とhair_color
:だから、2つのパラメータを取ります。ルビーコンソールで、あなたはこのようにそれを呼び出すことができます:
MyWebService.invoke :create_monkey, {:name => 'frank', :hair_color => 'red' }
=> {:status => 'ok'}
あなたは応答としてハッシュを取得します。この場合、私は、「OK」のステータスを得たが、それははるかに複雑になる可能性があります。
Monkey
と呼ばれる後で、あなたは(たとえば)を作成することができ、A テーブルなしモデルに、およびWebサービスを使用するなどnew
、create
、のようなメソッドを定義します。
私は、セキュリティなどの興味深い、多くのを残しています。あなたは私が持っていた同じ問題を持っている場合しかし、これは、あなたが始める必要があります。
よろしく!