3

ActionWebService と XMLRPC の例をたくさん見てきましたが、それらは 3 年前のものであり、私が理解していることから、ActiveResource は ActionWebService に取って代わるはずです。

ActiveResource が XML を使用して他の Web サイトと「対話」し、モデル情報を消費する方法についてはよく知っていますが、XML-RPC はまったく異なるタイプのものであり、実行したいメソッドの名前とリクエストを渡します。引き渡されるなど。

編集-ActiveResourceがどのように機能するかは知っていますが、定義されたAPI(MetaWeblogAPI)でXML-RPCを使用する必要があるクライアントアプリがあり、それを実装するしかありません-手が縛られています.

つまり、具体的には、ActiveResourceを使用してRailsでXML-RPCを実装する方法について、いくつかのドキュメントまたは記事を見つけようとしています。おそらくそれはできません-私もそれを知りたいと思います. XML-RPC リクエストからメソッド名を取り出してメソッドに渡す「リクエストをメソッドに渡す方法」の部分である「小さな飛躍」が欠けているだけです。私はこれを考えすぎていることを知っています。仕方がない - 私は .NET 派です :)。

「機能するものを使用」しようとしました-つまり、ActionWebServiceを実装しようとしましたが、Rails 2.3.5(私がインストールしたもの)ではうまく機能しないようです。インストールされているActionWebServiceを指している一定の」エラー(これにより、Rails 2.xが気に入らないと思われます)。

私は少し無頓着なので、優しくしてください :) - これはおそらく、私が思っているよりもずっと簡単だと思います。

4

2 に答える 2

2

思ったよりずっと簡単ですRails で XMLRPC をいじる必要はありません。要求されたときに Rails アプリが XML を提供するようにするだけで、.xml 要求の処理方法をアクションに指示する限り、任意の URL に .xml を追加するだけで XML を要求できます。アクションの例を次に示します。

def show
  @post = Post.find(:all, :conditions => { :id => params[:id] }
  respond_to do |format|
    format.html do
      # this is the default, this will be executed when requesting http://site.com/posts/1
    end
    format.xml do
      # this will be rendered when requesting http://site.com/posts/1.xml
      render :xml => @post
    end
  end
end

このように、複雑な XMLRPC 呼び出しは必要ありません。URL に .xml を追加するだけで、Rails は XML のストリーミング サービスを提供することを認識します。

これを ActiveResource で使用するには、次のようにするだけです

class Resource < ActiveResource::Base
  self.site = Settings.activeresource.site # 'http://localhost:3000/
  self.user = Settings.activeresource.username # Only needed if there is basic or digest authentication
  self.password = Settings.activeresource.password
end
class GenreResource < Resource
  self.element_name = 'genre'
end
class ArtistResource < Resource
  self.element_name = 'artist'
end
class AlbumResource < Resource
  self.element_name = 'album'
end)
class TrackResource < Resource
  self.element_name = 'track'
end
class AlbumshareResource < Resource
  self.element_name = 'albumshare'
end

その後、ビルトイン API レールが提供するアプリで動作し、などの呼び出しを行うことができTrackResource.exists?(34)ますtrack = TrackResource.new(:name => "Track Name"); track.save

ActiveResource に関するドキュメントは次のとおりです。ActiveResource が機能するためには、要求されたときに Rails アプリが XML を提供することを知っていることを確認してくださいrespond_to

于 2009-12-27T22:36:10.390 に答える
0

この場合、私は自分の ActiveResource サイト/サービスを適切でクリーンな RESTful な状態に保ちます。XML-RPC でそれを台無しにしないでください。

代わりに、一方で XML-RPC を受け入れ、他方で要求を ActiveResource に変換するプロキシ サービスを作成します。

その後、LiveWriter は XML-RPC を介して ActiveResourceProxyService と通信し、ActiveResourceProxyService は ActiveResource リクエストを Web アプリにキックバックします。

単純なブログ API を実装しているように聞こえるので、あまり多くのコードは必要ありません。

于 2009-12-29T04:12:17.167 に答える