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

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

現在ログインしているユーザーを取得するには、REST APIでURIが必要です。通常はGETID を持つリソースですが、クライアントはユーザーの ID を認識しません。

以下の解決策を見つけました:

  • ユーザー名で

    このソリューションでは、ユーザーの ID の代わりにユーザー名を使用します。

    例:

  • 独自のリソースで

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

    例:

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

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

    例:

  • フィルター付き

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

    例:

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

ベストアンサー1

それはあなた次第です。REST の観点から見ると、すべてのアプローチはまったく問題ありません。

ロイ・トーマス・フィールディングの論文*によれば、名前を付けられるあらゆる情報はリソースになり得る:

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

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

/me、、、および類似語を/users/me使用する場合、/users/myself/users/current認証されたユーザーそしてそれは常にコンセプト認証されたユーザーどのユーザーが認証されているかに関係なく。

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

ちなみに、同様の状況は魔法の (me/self) リソース識別子を使用することは、REST の原則に反していますか?


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

おすすめ記事