Rails APIと認証の基礎を理解しよう
はじめに
Week1では、
- Webアプリの仕組み
- HTTP
- API
- Git
- JavaScript
- React
について学習しました。
今回はバックエンド開発を担当するRails APIについて学びます。
AIサービスであっても、
React
↓
Rails API
↓
PostgreSQL
↓
OpenAI API
という構成になることが多く、Rails APIはシステムの中心となります。
Railsとは
RailsはRubyで開発されたWebアプリケーションフレームワークです。
正式名称は Ruby on Rails です。
Railsが人気な理由は、
- 開発速度が速い
- 設定より規約
- 多くの機能が標準搭載
という特徴があるからです。
スタートアップや受託開発では現在でも広く利用されています。
Rails APIモードとは
通常のRailsは、
- HTML生成
- 画面表示
- API
を担当できます。
しかしReactと組み合わせる場合、
画面表示はReactが担当します。
そのためRailsはAPI専用として利用します。
React
↓
API通信
↓
Rails API
これをRails APIモードと呼びます。
MVCとは
Railsで最も重要な概念です。
MVCは
- Model
- View
- Controller
の略です。
Model
データを扱う部分
例
class User < ApplicationRecord
end
ユーザー情報を管理します。
Controller
リクエストを受け取る部分
例
class TasksController < ApplicationController
end
API処理を担当します。
View
画面表示
今回はReactを利用するためほとんど使いません。
Routingとは
RailsはURLと処理を紐付けます。
例えば、
resources :tasks
を書くと、
GET /tasks
POST /tasks
PATCH /tasks/:id
DELETE /tasks/:id
が自動生成されます。
これをルーティングと呼びます。
データベース設計
Railsではデータをテーブルとして管理します。
Userテーブル
id
email
name
password
Taskテーブル
id
title
user_id
主キーとは
テーブル内でレコードを識別する値です。
id = 1
id = 2
id = 3
のように重複しません。
外部キーとは
テーブル同士を関連付けます。
Task
↓
user_id
↓
User
例えば、
Task
title: Rails学習
user_id: 1
なら、
ユーザー1が作成したタスクという意味になります。
ActiveRecordとは
RailsにはORMが標準搭載されています。
ORMとは、
SQLを書かずにDB操作を行う仕組みです。
データ取得
Task.all
実際には、
SELECT * FROM tasks;
が実行されています。
データ作成
Task.create(title: "Rails学習")
データ更新
task.update(title: "React学習")
データ削除
task.destroy
CRUDとは
ほぼすべてのWebアプリで利用される概念です。
Create
作成
POST /tasks
Read
取得
GET /tasks
Update
更新
PATCH /tasks/1
Delete
削除
DELETE /tasks/1
APIを作ってみる
タスク一覧取得API
class TasksController < ApplicationController
def index
tasks = Task.all
render json: tasks
end
end
Reactから
fetch("/tasks")
が実行されると、
Railsは
[
{
"id": 1,
"title": "Rails学習"
}
]
を返します。
認証とは
認証は、
「あなたは誰ですか?」
を確認する仕組みです。
例えば、
メールアドレス
パスワード
でログインします。
認可とは
認可は、
「何をしてよいですか?」
を管理します。
例えば、
管理者
一般ユーザー
で操作できる内容が変わります。
deviseとは
Railsで最も有名な認証ライブラリです。
ユーザー登録
ログイン
ログアウト
などを簡単に実装できます。
devise_token_authとは
ReactとRails API構成でよく利用されます。
ログイン成功時にトークンを発行します。
ログイン
↓
Rails
↓
トークン発行
↓
React保存
JWTとは
JWTは認証情報を保持するトークンです。
ログイン後は、
Authorization Header
にトークンを付与して通信します。
ログイン処理の流れ
メールアドレス入力
↓
パスワード入力
↓
POST /auth/sign_in
↓
Rails
↓
DB確認
↓
トークン発行
↓
Reactへ返却
以降はそのトークンを利用して認証を行います。
ReactとRailsの連携
最終的な流れは次のようになります。
React
↓
ログイン
↓
Rails API
↓
PostgreSQL
↓
トークン返却
↓
React保存
その後、
React
↓
GET /tasks
↓
トークン送信
↓
Rails
↓
認証成功
↓
データ返却
となります。
Week2で理解してほしいこと
重要なのはコードを暗記することではありません。
理解すべきなのは、
URLが呼ばれる
↓
Controller
↓
Model
↓
DB
↓
JSON返却
という流れです。
そして認証では、
ログイン
↓
トークン取得
↓
トークン付き通信
が行われていることを理解しましょう。
これが理解できれば、実務レベルのAPI開発の基礎は身についています。
次回のWeek3では、
- OpenAI API
- AIチャット
- セキュリティ
- デプロイ
- チーム開発
について学習します。