たまにはプログラミング備忘録をば。
手早く書きます。
Railsでアプリケーションを開発していると、Ajaxを使って操作性の高いページを作ることが多い。通常、Railsは必要なHTMLを組み立てて返すのが仕事になるが、JavaScriptから便利に扱えるようにJSON形式でデータを返すようにすることもできる。
HTMLだけでなく、必要なデータをJSONなどの別形式で返すサーバの仕組みのことをAPI、と呼ぶ。
APIの機能をRailsに追加する時には大きく分けて下記3通りの方式がある。
1.HTMLを返すためのコントローラを共用して、APIとして使えるようにする。
⇨手軽にAPIを追加できる
2.API専用のコントローラを作成する
⇨APIの機能が大きくなるとコントローラを分けた方が可読性が良くなる
3.APIを作成するためのgemを利用する
⇨HTMLとAPIのロジックが大きく異なる場合や、APIの分量が大きい場合は専用のgemを使うと便利
HTMLを返す時にはERBやHAMLを使ったビューを利用して必要なページを生成するが、APIとしてJSONを返す場合はHTMLほどのロジックが必要ないため、ビューを使わずにデータを生成することができる。
前項の1でも触れたが、Railsには1つのコントーラーのアクションの中でHTMLとJSONというフォーマットごとに条件分岐できる仕組みがあるので簡単に触れる。
Railsのコントローラで利用できるrespond_toメソッドを使用すると、リクエストがHTMLを求めているかもしくはJSONを求めているかを拡張子やヘッダー情報を利用して自動的に条件分岐してくれる。
ファイル:XXXX_controller.rb
respond_to do |format|
format.html { render ... } # この中はHTMLリクエストの場合に呼ばれる
format.json { render ... } # この中はJSONリクエストの場合に呼ばれる
end
こんな感じか。
主に非同期通信なんかで使われるよ。
忘れたら見返せよ、未来の自分。