1. ホーム
  2. rest

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

2023-01-31 09:51:55

質問

REST APIで、現在ログインしているユーザーを取得するためのURIが必要です。通常、私は GET を使いますが、クライアントはユーザのIDを知りません。

私は以下の解決策を見つけました。

  • ユーザー名で

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

  • 自前のリソースで

    このソリューションでは、ユーザー用のリソースが1つ、ログインしたユーザー用のリソースが1つ追加されています。

    例を挙げます。

  • シンボリックリンクあり

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

  • フィルター付き

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

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

どのように解決するのですか?

それはあなた次第です。 どのアプローチもRESTの観点からは全く問題ありません。

Roy Thomas Fieldingの論文によると * , 名前を付けることができるすべての情報は、リソースになることができます。 :

<ブロッククオート

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

RESTにおける情報の重要な抽象化は リソース . 文書や画像、時間サービス(たとえば、"今日のロサンゼルスの天気)、他のリソースのコレクション、非仮想オブジェクト(たとえば、人)など、名前を付けることができるあらゆる情報がリソースとなりえます。言い換えれば、著者がハイパーテキストで参照する対象となりうるあらゆる概念は、リソースの定義に当てはまらなければならない。リソースとは、実体の集合に対する概念的なマッピングであり、ある特定の時点でマッピングに対応する実体ではない。[...]

を使用する場合 /me , /users/me , /users/myself , /users/current と似たようなロケータがありますが、これは 認証されたユーザ を特定し、それは常に 概念 認証されたユーザー の、どのユーザが認証されたかに関係なく

より柔軟に対応するために /users/{username} .

ちなみに、似たような状況は マジック(私/自分)のリソース識別子を使うことは、RESTの原則に反するのでしょうか?


* REST に興味があるなら 第 5 章 は必読の論文です。