現在のログインユーザーを取得するには、REST APIにURIが必要です。通常、IDを持つリソースで GET
を使用しますが、クライアントはユーザーのIDがわかりません。
私は次の解決策を見つけました:
ユーザー名で
このソリューションでは、ユーザーのIDではなくユーザー名を使用します。
例:
GET /user/{userSlug}
独自のリソースで
このソリューションには、ユーザー用の1つのリソースとログインユーザー用の1つの追加リソースがあります。
例:
JIRA REST API :GET /myself
GitHub REST API :GET /user
Stack Exchange REST API :GET /me
シンボリックリンク付き
このソリューションには、ユーザーのIDのシンボリックリンクがあります。
例:
GET /user/current
フィルター付き
このソリューションでは、ユーザー名にフィルターを使用します。
例:
GET /user?username={username}
最もRESTfulなのはどれですか?長所と短所は何ですか?
それはあなた次第です。すべてのアプローチは、RESTの観点からは完全に問題ありません。
ロイ・トーマス・フィールディングの論文によると*、名前を付けることができる任意の情報をリソースにすることができます:
RESTの情報の主要な抽象化は、resourceです。名前を付けることができる情報は、リソースです。ドキュメントまたは画像、一時的なサービス(「ロサンゼルスの今日の天気」など)、他のリソースのコレクション、非仮想オブジェクト(人など)などです。 。言い換えれば、著者のハイパーテキスト参照の対象となる可能性のある概念は、リソースの定義内に収まらなければなりません。リソースは、特定の時点でのマッピングに対応するエンティティではなく、エンティティセットへの概念的なマッピングです。 [...]
/me
、/users/me
、/users/myself
、/users/current
などを使用する場合、認証済みユーザーのロケーターがあり、常に- concept of authenticated user、認証されているユーザーに関係なく。
柔軟性を高めるために、/users/{username}
もサポートできます。
ちなみに、同様の状況が REST原則に反するマジック(me/self)リソース識別子を使用していますか?
* RESTに興味がある場合、フィールディングの論文の chapter 5 は必読です。