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

1. 対象の機能

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

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

2. URL設計

MethodPathDescription
GETusers/{user_id}特定のユーザを表示
POSTtweetsツイートを作成する(返信、引用ツイート含む)
POSTretweets特定のツイートをリツイートする
POSTfollowings特定のユーザをフォローする
GETfollowingsログイン中のユーザのフォロー一覧を表示
GETfollowersログイン中のユーザのフォロワー一覧を表示
GETusers/{user_id}/followings特定のユーザのフォロー一覧を表示
GETusers/{user_id}/followers特定のユーザのフォロワー一覧を表示
POSTlistsリストを作成する
POSTlists/{list_id}/members特定のリストに特定のユーザを追加する
DELETElists/{list_id}/members/{user_id}特定のリストから特定のユーザを削除する
GETlistsログイン中のユーザのリスト一覧を表示
GETusers/{user_id}/lists特定のユーザのリスト一覧を表示
GETlists/{list_id}特定のリストを表示

3. 解説

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

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

3-2. リツイートする

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

3-3. フォローする

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

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

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

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

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

【参考】