Rails:HTTPとRESTfulなリソース設計について
HTTPとRESTfulなリソース設計についてまとめました。よろしくお願いいたします
前提...RailsにはHTTPリクエストからRubyの処理を呼び出し、クライアントに結果を返す仕組みが備わっている。
HTTPとは
Hyper Text Transfer Protocol の略で、分散コンピュータ間でHTMLなどの情報をやり取りするためのプロトコル
クライアントがサーバ上の「何かの情報」を「どうして欲しい」とリクエスト(HTTPリクエストという)し、サーバがレスポンスする
「何かの情報」→クエリとパス
「どうして欲しい」→HTTPメソッド
HTTPメソッドとは
クライアントが行いたい処理をサーバに伝える手段
よく使う4つのメソッド↓
GET..リソースを取得する
POST..サーバー上にリソースを作成する
PUT..リソースの状態を変更、または更新する
DELETE..リソースを除去、または削除する
CRUDとは
システムに必要な4つの主要機能である「生成(Create)」「読み取り(Read)」「更新(Update)」「削除(Delete)」のイニシャルを並べた用語のこと
RESTとは
インターネット(Web)上でいろいろな情報や機能を結びつける方法、あるいは考え方のひとつ。
インターネット上にある情報やデータ(リソース)は、すべて固有の名前(URN)か固有の住所(URL)を持っている。この URN と URL を合わせて URI という。
そして、URI を指定することでリソースにアクセスし、そのリソースに対してHTTPメソッド(「GET」や「POST」など)を送ることで操作するという考え方
REST では明示的に HTTP メソッドを使う必要があり、しかも HTTP プロトコルの定義どおりの方法で使う必要があるので基本的な設計原則によって、CRUD (create、read、update、delete) 操作とHTTPメソッドとが 1 対 1 に対応付けられる
HTTPメソッド | 意味 | CRUD |
---|---|---|
POST/PUT | 作成 | Create |
GET | 読み込み | Read |
PUT | 更新 | Update |
DELETE | 削除 | Delete |
RESTfulとは
RESTの原則に従って実装されているシステムのこと
Webに運用したソフトウェア設計様式を備えたルート(REST)のことで、URLで表現することができる。
つまりURLに対してHTTPのメソッドを利用することで統一感のある、意味がつかみやすいURLを設計することができる。
ex)リソース対象として仮のモデルクラス(Product)を作成し、次にルート定義、最後にルートの確認を行う
resources :product
#productはリソース名
#リソース名はプログラムが使用するデータの一覧取得や編集などを行う対象となるものを設定する
ターミナルでモデルを作る
$ rails g model product
を入力すると
Prefix Verb URI Pattern Controller#Action
puroducts GET /puroducts(.:format) puroducts#index
POST /puroducts(.:format) puroducts#create
new_puroduct GET /puroducts/new(.:format) puroducts#new
edit_puroduct GET /puroducts/:id/edit(.:format) puroducts#edit
puroduct GET /puroducts/:id(.:format) puroducts#show
PATCH /puroducts/:id(.:format) puroducts#update
PUT /puroducts/:id(.:format) puroducts#update
DELETE /puroducts/:id(.:format) puroducts#destroy
resourcesメソッドを利用することでHTTPメソッド(Verb列)とURLとアクションが紐づいたルート定義が生成されていることがわかる
Author And Source
この問題について(Rails:HTTPとRESTfulなリソース設計について), 我々は、より多くの情報をここで見つけました https://qiita.com/rainbow___0/items/e291fb350d26feab88d2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .