これを処理する最善の方法は、外部アプリケーションがインターフェースできる Web アプリケーションから API を提供することです。Rails の優れた点の 1 つは、基本的にこれをすぐにサポートできることです。
Web から生徒を表示するための典型的なコントローラー アクションを実行します。
class StudentsController < ApplicationController
def show
@student = Student.find(params[:id])
end
end
リクエストが行われると/students/1
、students/show
ID#1 の Student に対してテンプレートがレンダリングされます。
Rails には、URL の末尾に xml/json を追加して、異なる形式の処理を要求する機能があります。
class StudentsController < ApplicationController
respond_to :html, :json
def show
@student = Student.find(params[:id])
respond_with(@student)
end
end
これにより、レスポンダーと呼ばれる ActionController の機能がセットアップされます。これで、コントローラーにリクエストが行われると、Student モデル/students/1.json
が呼び出さas_json
れます。これは、デフォルトですべてのモデル属性を取得し、json オブジェクトに変換します。これは、Student モデルで as_json をオーバーライドすることでカスタマイズできます。
更新を行う場合は、同様のパターンに従うことができます。への PUT 要求を使用してサーバーに送信します/students/1.json
。リクエストは JSON 形式ではありません。使用するライブラリはおそらく vars の設定をサポートしています。Rails が期待する形式 (つまりstudent[field]
) であることを確認してください。あとは Rails ミドルウェアが処理してくれます。
class StudentsController < ApplicationController
respond_to :html, :json
def update
@student = Student.find(params[:id])
@student.update_attributes(params[:student])
respond_with(@student)
end
end
レスポンダーでは update_attributes が機能しているかどうかのチェックがないことに注意してrespond_with
ください。エラーがある場合、応答コードとして HTTP 422 Unprocessable Entity を取得し、応答の本文はエラーを含む JSON オブジェクトになります。
また、JSON の代わりに XML 応答本文を使用する場合は、これらのすべての例を にjson
置き換えることができることにも言及する価値があります。xml