REST API【ゼロから始めるWeb API入門実践編】 ~リソースの設計とDB設計~
リソース指向アーキテクチャ
1. Webサービスで利用するデータを特定する
2. データをリソースに分ける → リソース設計
3. リソースにURIで名前をつける → URL設計
4. リソースの表現を設計する → 今回は全てJSONで
5. リンクとフォームでリソースを結びつける
6. イベントの標準的なコースを設計する
7. エラーを想定する
SNSのデータ特定とリソース設計
・ユーザ情報
ユーザID、ユーザ名、プロフィール、写真、誕生日..etc
・フォロー情報
フォロワーID、フォローID
今回対象とするリソース
1. ユーザーリソース
2. 検索結果リソース
URI設計
・/users:ユーザーリソースのURI
・/search?q=:検索結果リソースのURI(?qはクエリパラメータ)
メソッド URI 詳細
GET /api/v1/users ユーザーリスト取得
GET /api/v1/users/123 ユーザー情報の取得
POST /api/v1/users 新規ユーザーの作成
PUT /api/v1/users/123 ユーザー情報の更新
DELETE /api/v1/users/123 ユーザーの削除
GET /api/v1//search?q=torahack ユーザー検索結果の取得
↑ユーザー名が「torahack」の検索結果
データベース設計
Usersテーブル
フィールド名 データ型 NULL許容 その他
id INTEGER NOT NULL PRIMARY KEY
name TEXT NOT NULL
Profile TEXT
date_of_birth TEXT
created_at TEXT NOT NULL date関数で日付を取得
updated_at TEXT NOT NULL date関数で日付を取得
データベースへの接続とテーブル作成
appディレクトリの下層にdbディレクトリ作成
コンソールに入力
sqlite3 app/db/datebase.sqlite3
Create users table
CREATE TABLE users (
id INTEGER NOT NULL PRIMARY KEY,
name TEXT NOT NULL,
profile TEXT,
created_at TEXT NOT NULL DEFAULT (DATETIME('now', 'localtime')),
updated_at TEXT NOT NULL DEFAULT (DATETIME('now', 'localtime')),
date_of_birth TEXT
);