ユーザーのパスワードをリセットする機能を提供したいと考えています。この呼び出しは明らかに認証を必要としません。まず、次のようなことを考えました。
DELETE /users/{id}/password
: 電子メールでユーザーに送信されるリセット トークンを生成します。
POST /users/{id}/password
: 本文に新しいパスワードと有効なリセット トークンが必要です
しかし問題は、アプリケーションまたは Web サイトがユーザーの ID を提供できないことです。ユーザーに要求できるのはメール アドレスだけだからです。
API への他の (認証されていない) 呼び出しが多数ありますが、ID は存在せず、ユーザーは電子メールによってのみ識別されます。
私たちのチームでは、次のソリューションについて話し合いました。
- URL の ID をユーザーの電子メールに置き換える
- URL から ID を切り取り、メールにクエリ パラメータを指定します。
これら 2 つのどちらかを選択する必要がある場合は、最初の 1 つを選択します。なぜなら、クエリ パラメーターで必須のものを提供することは RESTful ではないと思うからです。これらは常に、リソースのフィルター処理など、オプションの何かを表しているからです。これらの URL を設計するためのより良い方法はありますか、または ID をユーザーの電子メールに置き換えて、REST 制約に関して問題なく使用できますか?