LoginSignup
0
0

More than 1 year has passed since last update.

MVC ルーティングについて

Last updated at Posted at 2021-05-01

“初学者向け基礎知識”
MVCにおけるルーティングについて

ここではルーティングの意味と、MVC各機能の詳細について触れます。
大まかな概要部分については、下記の記事でまとめました。
https://qiita.com/TechOtome/items/bb7886fa9fcb7e0a5c18

MVCの処理の流れ

図1.リクエストからレスポンスまでの処理の流れ
MVCの流れ.jpg

説明の前に

ここでは、Ruby on Railsを用いたMVCの記述を紹介しています。
・Ruby: プログラミング言語の一つ。記述がシンプルで分かりやすいことから人気。大きなWEBアプリーケーションにも小さなプログラムにも対応できる。
・Ruby on Rails: Rubyで作られた”フレームワーク”のこと。
・フレームワーク:WEBアプリを作成する上で必要なツールを準備する必要があるが、
フレームワークは既に”必要となる作業やリソース”を用意している。簡潔に言えば、フレームワークを使って開発した方が作業が減って楽。

ルーティングについて

一言で書くと
”クライアントからのリクエストの処理を振り分ける。”

仮にユーザーが”A.com”というURLをクリックしたら、”A”というページを表示する(レスポンスとして返す)ように処理を振り分けます。
Twitterであれば「新しいツイートをする」「プロフィール画面を表示する」「フォロワー一覧を見る」「フォロワーのツイート一覧を見る」などなど。さまざまな処理がありますが、これらは全て一度ルーティングにリクエストが送られて、どのような処理をするのか振り分けてから、コントローラーからレスポンスが送られてユーザーが受け取ることができます。

実例)ルーティングでトップページを見るには?

リクエストと言っても、具体的な中身がイメージしにくいと思います。
例えば”Tweet”というアプリがあって、そのトップページを見たいというリクエストがあった場合のルーティングは下記の記述になります。

get ’/tweets’, to: ’tweets#index’

上記の記述は3つに分けることができます。
またそれぞれの意味も一緒に記述します。
・get →HTTPメソッドの”GET”
・/tweets →URIパターン(URIとURLは別のものですが、WEBページのアドレスではURIもURLも同じ意味を指します。)
(※URI解説参照:
https://webtan.impress.co.jp/e/2010/03/09/7539)
・tweets#index →リクエストの行き先=tweetsというコントローラ名のindexアクション

ルーティングでは、リクエストで”HTTPメソッド”と”URI”パターンを受け取りリクエストの行き先を記述します。

HTTPメソッド ‘URIパターン’, to ‘コントローラー名#アクション名’

HTTPメソッドとアクションとは?

ここで、MVCの記述における重要な2つの用語を簡潔にまとめます。
1.HTTPメソッド
HTTPメソッド:HTTP通信の中で行いたい処理の種類のこと。HTTPリクエストメソッドとも言う。8つ存在する。
HTTP通信:WEBアプリはインターネットを通じて利用することができる。その時のデータの送受信の通信方法をHTTP通信と呼ぶ。

図2.代表的なHTTPメソッド4つ
02_http method.jpg

2.アクション
アクション:MVCにおけるコントローラー内の処理の種類のことを言う。コントローラーではルーティングから受け取ったリクエストに対応する処理をする。

図3.MVCのコントローラーアクション
02_action_name.jpg

終わりに

MVCのメリットの一つに「処理の記述が整理されている」点がありますが、このようにアクション名でどんな処理をするのかが理解できます。
MVCを使ったアプリ開発では、HTTPメソッドとアクション名を理解することがとても重要です。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0