#はじめに
今回はRailsアプリを開発する上で大切なRESTについて学んだことをまとめていきます。
RESTに基づいた開発を行うことによって、モデルを扱うコントローラの効率の良いパターンやセキュリティに考慮したアプリケーション開発ができます。
#リソースベースのルーティング
RESTとは、リソースを操作するアプリケーション作成のスタイルです。
Railsにおけるリソースとは、コントローラが扱う対象に名前を付けたものです。
Railsアプリの成果物に会員情報をリソースとして扱います。
resources :members
これだけでMembersControllerに対して7つのアクションを設定できます。
7つのアクション以外にも、任意のアクションをを追加できます。
resouces :members do
collection { get "search" } #メンバーの検索
end
その際、会員一覧のようにリソースの集合を表すアクションはcollectionブロックで囲みます。
また7つのアクションのうち、特定のアクションを使わないときはresourcesメソッドにonlyオプションを追加します。
resources :members, only: [:index, :show]
#パスとHTTPメソッド
7つのアクションを呼びだすには、パスとHTTPメソッドの組み合わせで使います。
アクション | パス | HTTPメソッド |
---|---|---|
index | /members | GET |
show | /member/10 | GET |
new | /members/new | GET |
edit | /members/10/edit | GET |
create | /members | POST |
update | /members/10 | PATCH |
destroy | /members/10 | DELETE |
show,edit,update,destroyアクションを呼ぶときは、/members/10の[10]のように、モデルの主キーを示すidパラメータが必須です。idパラメータは、コントローラの中でparams[:id]で取り出せます。
PATCHメソッドとDELETEメソッドは、実際のリクエストではPOSTメソッドで送信されます。
Railsの隠しパラメータ_methodを使い、_method=patch、_method=deleteをリクエストに加えることでメソッドの種類を表します。
#RESTの原則
RESTとは大まかにいえば、機能ではなくリソースを中心にして物事を考えることです。
・URLで表す一意なアドレス
・リソースに対する基本操作は、取得、追加、更新、削除の4つであり、対応するHTTPメソッドGET,POST,PATCH,DELETEでリクエスト
・クライアントもサーバーもセッション状態を記憶する必要がない
#参考文献
改訂4版 基礎 Ruby on Rails
https://www.amazon.co.jp/改訂4版-Ruby-Rails-IMPRESS-KISO/dp/429500460X