2016-03-27 6 views
1

私は現在自分自身のREST APIを書いています。私のエンドポイントの1つに/api/profileという名前が付けられます。このプロファイルには、GETまたはPUTのいずれかが取得されます。 PUT /api/profileに電話する際に、URLにユーザーID、電子メール、ユーザー名のいずれの形式も含めないことが悪い習慣または間違っていると言われています。すべての要求には、認証のためのベアラトークンがあります。これにより、サーバーは大文字と小文字の区別なくユーザーをロードし、要求データに格納します。 PUTを使用して情報を更新する際、URLにパラメータが指定されていない場合、ターゲットはself、この場合は認証されたユーザーであると想定すると安全だと思いました。RESTエンドポイントの現行ユーザーIDを忘れてしまいましたか?

私はこの仮定をするのが間違っていますか、これはRESTの悪い例ですか?

+0

Rubenは、リソースの場所を知っているので、認証を受けているプロファイルのIDは完全に受け入れられます。 –

答えて

2

RESTのアーキテクチャ上の制約の1つは、リソースをキャッシュ可能にすることです。

クライアントとサーバーの間にプロキシまたはその他のキャッシュがある場合、要求ラインGET /api/profileはキャッシュできません。または、別のユーザーが間違ったプロファイルを取得する可能性があります。

あなたのケースにはVary: Authorizationヘッダーを使用してこれを防ぐことができます。しかし、URLにidを付けると、どのリソースを取得したいのかが明確になります。

PUTリクエストでは、キャッシュされないため問題はありませんが、URIデザインの一貫性を維持する必要があります。

+0

あなたのご意見ありがとうございます –

関連する問題