0

背景:私は、Foosのコレクションに関する情報を表示するウェブサイトを持っているとします。間違った方法を使用し、リソースが存在するかどうかわからない場合、404または405で応答する必要がありますか?

https://example.com/foo/{foo-id} 

私だけrespontが要求をGETするために - あなたは、POSTまたはPUTかはFooを削除することはできません:URL:sがフォーム上にあります。特定のIDが実際のFooに対応しているかどうかを確認することは、費用のかかる操作なので、避けたいものです。

質問:/foo/12345へのPOSTリクエストにどのように応答しますか?理想的なのは、そのようなFooが存在するかどうかを確認することです。そうであれば、405(Method Not Allowed)を送信します。そうでない場合は、404(Not Found)を送信します。しかし、Fooが存在するかどうかを調べることは費用がかかります。私は、正しい方法を使用することさえ気にすることのできない馬鹿にエネルギーを無駄にしたくありません。

それでは、私は2つのオプションが残されています:常に実際にそこに何かがあるかもしれないにも関わらず、404で応答

  • 何かが存在しなくても常に405と応答し、適切な方法で要求を再送信すると、ユーザーエージェントは404で挨拶されます。

どのオプションがHTTP標準に最も近いのですか?その中の誰かが標準に疑問を呈していますか?

答えて

1

私が知っている限り、HTTP仕様自体に関して厳しいルールはありません。

これについての私の個人的な意見が要求に応答の種類を与えることを決定する段階で、要求タイプをチェックすることが要求パスをチェックする前に来るべきであるということですが(それもありますかどうかを確認するため) 。

状況によっては、Webサーバー(またはロードバランサ)を構成しても、間違った種類のリクエストメソッドをすべてブロックするだけで合理的なアプローチであると考えてください。これは、パスの前にリクエストメソッドをチェックする必要があることを私に示唆しています。

Fooが存在するかどうかを確認することは費用のかかる操作ですが、最初に適切なリクエストを送信するよう注意していることを確認することは賢明です!

そうですね、私は常にその場合に405を返します。

関連する問題