Rails を使用して Web サービスを通じて JSON 形式でデータを公開するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/57665

質問

Rails を使用して JSON で Web サービス クライアントにデータを返す簡単な方法はありますか?

役に立ちましたか?

解決

Rails リソースは、モデルに RESTful インターフェイスを提供します。見てみましょう。

モデル

class Contact < ActiveRecord::Base
  ...
end

ルート

map.resources :contacts

コントローラ

class ContactsController < ApplicationController
  ...
  def show
    @contact = Contact.find(params[:id]

    respond_to do |format|
      format.html 
      format.xml {render :xml => @contact}
      format.js  {render :json => @contact.json}
    end
  end
  ...
end

これにより、必要な応答の種類を取得するための特別なメソッドを定義する必要がなく、API インターフェイスが提供されます。

例えば。

/contacts/1 # Responds with regular html page

/contacts/1.xml # Responds with xml output of Contact.find(1) and its attributes

/contacts/1.js # Responds with json output of Contact.find(1) and its attributes

他のヒント

Rails は、必要なほとんどのものにモンキーパッチを適用します。 #to_json 方法。

思いつきでは、ハッシュ、配列、ActiveRecord オブジェクトに対しても実行でき、必要なユースケースの約 95% をカバーできるはずです。独自のカスタム オブジェクトがある場合、独自のオブジェクトを記述するのは簡単です to_json このメソッドはデータをハッシュに詰め込み、json 化されたハッシュを返すだけです。

これを行うプラグインがありますが、http://blog.labnotes.org/2007/12/11/json_request-handling-json-request-in-rails-20/

そして、私が理解しているところによると、この機能はすでに Rails に組み込まれています。ただし、そのブログ投稿を参照してください。コード例と説明があります。

ActiveRecord は、JSON と対話するためのメソッドも提供します。AR オブジェクトから JSON を作成するには、object.to_json を呼び出すだけです。JSON から AR オブジェクトを作成するには、新しい AR オブジェクトを作成してから object.from_json. を呼び出すことができる必要があります。私が理解した限りでは、これは私にとってはうまくいきませんでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top