Chapter 06無料公開

【Rails】RailsAPIの基礎

のら
のら
2022.05.07に更新

Railsの通信の流れを解説(MVCモデル)

APIモードでのRailsの通信の流れは基本的には下記のとおりです。

  • ブラウザからURLにアクセス
  • routes.rbの情報を元に、処理を行うコントローラーにいく
  • モデルでデータをDBから取得
  • コントローラーでデータをブラウザに返す

省略している部分もありますが、最初は上記のようなイメージで大丈夫だと思います。慣れてきたらご自身で色々調べてみると良いかもしれません。

下記に画像イメージを載せておきました。ご参考までに🙇‍♂️

以降からルーティング、コントローラー、モデルの役割をざっくり解説していきます。

ルーティング(route.rb)

ルーティングは、URLとコントローラーとアクション(処理)を結びつける役割を担っています。config/routes.rbファイルで管理されています。具体的に例を見てみましょう。

routes.rb
get "members" => "members#index"

config/routes.rbには基本的に下記の情報を記述する必要があります。

  • HTTPメソッド:上記の例ではgetの部分
  • URL(Path):上記の例ではmembersの部分
  • コントローラーとアクション:上記の例ではmembers#indexの部分

HTTPメソッドに関してはこのような記事を読んでみると良いかもしれません。ここら辺に関しては、この本でもタスクの一覧機能や作成機能を作る時に詳しく解説します。

config/routes.rbの書き方は他にも色々あるので、気になる方は調べてみると良いかもしれません。

Rails のルーティング

コントローラー(controller)

特定のURLにアクセスした時に行う処理の内容を管理する場所です。 どのURLにどの処理を結びつけるかは、先ほど解説したルーティング(config/routes.rb)で設定します。コントローラーは具体的な処理を書く場所です。 app/controllersディレクトリ内のファイルで管理されます。

このapp/controllersディレクトリの中に1コントローラー1ファイルとしてファイルを作っていきます。 例えば、membersコントローラーを作りたい場合は下記のようになります。

app/controllers/members_controller
class MembersController < ApplicationController
  # ここに処理を書いていく
end

ファイル名はスネークケースで作成して、コントローラー名はキャメルケースで命名してください。


スネークケースとキャメルケース

下記のような書式のことを言います。

  • スネークケース:members_controller
  • キャメルケース:MembersController

スネークケースはヘビ🐍、キャメルケースはラクダのコブ🐪 のように見えることからこの名前がついています。


試しにコントローラー内に処理を記述する例を見てみましょう。

app/controllers/members_controller
  def index
    members = Member.all
    render json: members
  end

上記のコードは、membersコントローラーのindexアクションでMemberモデルを全てjson形式で返す処理です。 このindexメソッドは「アクション」と呼ばれます。

ここまでの流れを少しまとめてみましょう。

  • config/routes.rbhttp://localhost:3010/membersにアクセスしたら、members(コントローラー)#index(アクション名)で処理されるように設定。
  • app/controllers/members_controllerのindexアクションで具体的に処理が行われる。

モデル(Model)

コントローラーからデータの作成・更新・削除の指示を受けてデータベースとやりとりする場所(クラス)です。 DB(データベース)のテーブルとモデルが紐付いている形になります。

モデルの機能を使って、データベースを操作するロジックを書いたり、モデル同士の関連などを記述します。

最後に

あまり詳しく解説してしまうと、脱落してしまう方が出てくるので、この本を進める中で必要最低限の部分だけを解説しました。「もっと詳しく知りたい!」という方がいらっしゃいましたら下記のドキュメントに目を通すと良いかもしれません。

今は完璧に理解できなくても、本を読み進めて手を動かしていく中で次第に理解が深まっていくと思うので、そのタイミングでドキュメントをしっかり読むのが良いかもしれません。