あまブログ

ドキドキ......ドキドキ2択クイ〜〜〜〜〜〜〜ズ!!

【REST】TwitterのURLを再設計する

この記事ではRESTの考え方を理解するために、TwitterのURLをRESTの設計原則に従って再設計します。

1. 対象の機能

今回はTwitterの以下の機能を再設計の対象とします。

  • ユーザを表示する
  • ツイートする
  • ツイートに返信する
  • 引用ツイートをする
  • リツイートする
  • フォローする
  • フォロー一覧を表示する
  • フォロワー一覧を表示する
  • リストを作成する
  • リストにユーザを追加する
  • リストからユーザを削除する
  • リスト一覧を表示する
  • リストを表示する

2. URL設計

Method Path Description
GET users/{user_id} 特定のユーザを表示
POST tweets ツイートを作成する(返信、引用ツイート含む)
POST retweets 特定のツイートをリツイートする
POST followings 特定のユーザをフォローする
GET followings ログイン中のユーザのフォロー一覧を表示
GET followers ログイン中のユーザのフォロワー一覧を表示
GET users/{user_id}/followings 特定のユーザのフォロー一覧を表示
GET users/{user_id}/followers 特定のユーザのフォロワー一覧を表示
POST lists リストを作成する
POST lists/{list_id}/members 特定のリストに特定のユーザを追加する
DELETE lists/{list_id}/members/{user_id} 特定のリストから特定のユーザを削除する
GET lists ログイン中のユーザのリスト一覧を表示
GET users/{user_id}/lists 特定のユーザのリスト一覧を表示
GET lists/{list_id} 特定のリストを表示

3. 解説

3-1. ツイートする(返信・引用ツイート含む)

Method Path Description
POST tweets ツイートを作成する(返信、引用ツイート含む)
  • ツイートをするのは常にログインユーザのため、URIにログインユーザのidは含めない
  • 返信の場合、リクエストのボディに返信先のツイートの情報を含める
  • 引用ツイートの場合、リクエストのボディに引用するツイートのidを含める

3-2. リツイートする

Method Path Description
POST retweets 特定のツイートをリツイートする
  • リツイートをするのは常にログインユーザのため、URIにログインユーザのidは含めない
  • リクエストのボディにリツイートするツイートのidを含める

3-3. フォローする

Method Path Description
POST followings 特定のユーザをフォローする
  • フォローを実行するのは常にログインユーザのため、URIにログインユーザのidは含めない
  • リクエストのボディにフォローするユーザのidを含める

3-4. リストにユーザを追加する

Method Path Description
POST lists/{list_id}/members 特定のリストに特定のユーザを追加する
  • リストへのユーザ追加を実行するのは常にログインユーザのため、URIにログインユーザのidは含めない
  • リクエストのボディにリストに追加するユーザのidを含める

3-5. リストを表示する

Method Path Description
GET lists/{list_id} 特定のリストを表示
  • リストを一意に特定できれば、そこからリストを所有するユーザはわかるため、users/{user_id}/lists/{list_id}とする必要はない

【参考】