web-dev-qa-db-ja.com

RESTアプリケーションで現在ログインしているユーザーのURIを設計する

現在のログインユーザーを取得するには、REST APIにURIが必要です。通常、IDを持つリソースで GET を使用しますが、クライアントはユーザーのIDがわかりません。

私は次の解決策を見つけました:

  • ユーザー名で

    このソリューションでは、ユーザーのIDではなくユーザー名を使用します。

    例:

  • 独自のリソースで

    このソリューションには、ユーザー用の1つのリソースとログインユーザー用の1つの追加リソースがあります。

    例:

  • シンボリックリンク付き

    このソリューションには、ユーザーのIDのシンボリックリンクがあります。

    例:

  • フィルター付き

    このソリューションでは、ユーザー名にフィルターを使用します。

    例:

最もRESTfulなのはどれですか?長所と短所は何ですか?

39
dur

それはあなた次第です。すべてのアプローチは、RESTの観点からは完全に問題ありません。

ロイ・トーマス・フィールディングの論文によると*名前を付けることができる任意の情報をリソースにすることができます

5.2.1.1リソースとリソース識別子

RESTの情報の主要な抽象化は、resourceです。名前を付けることができる情報は、リソースです。ドキュメントまたは画像、一時的なサービス(「ロサンゼルスの今日の天気」など)、他のリソースのコレクション、非仮想オブジェクト(人など)などです。 。言い換えれば、著者のハイパーテキスト参照の対象となる可能性のある概念は、リソースの定義内に収まらなければなりません。リソースは、特定の時点でのマッピングに対応するエンティティではなく、エンティティセットへの概念的なマッピングです。 [...]

/me/users/me/users/myself/users/currentなどを使用する場合、認証済みユーザーのロケーターがあり、常に- concept of authenticated user、認証されているユーザーに関係なく。

柔軟性を高めるために、/users/{username}もサポートできます。

ちなみに、同様の状況が REST原則に反するマジック(me/self)リソース識別子を使用していますか?


* RESTに興味がある場合、フィールディングの論文の chapter 5 は必読です。

30
cassiomolin