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
);


いいなと思ったら応援しよう!