返される適切なステータスコードを見つけようとしていますが、これまでのところ私が考えていることは次のとおりです。
GET /api/documents/1
- ドキュメントが存在し、ユーザーがアクセスできる - 200 OKGET /api/documents/2
- ドキュメントは存在しますが、ユーザーにはアクセス権がありません - 403 ForbiddenGET /api/documents/3
- ドキュメントが存在しません (アクセス権があるかどうかを確認できません) - 404 Not Found? 403禁止します?GET /api/documents/a
- ID が無効です (数値である必要があります) - 400 Bad Request? 404お探しのページが見つかりませんでした?403禁止します?
現時点でのバックエンド (MongoDB を使用) の問題は、ユーザーがアクセスできるドキュメント ID のリストと照合して、ユーザーがドキュメントにアクセスできるかどうかを確認することです。リストに document_id が見つからない場合は、403 Forbidden が自動的に返されます。これにより、最初にデータベースからドキュメントをフェッチして、ユーザーがアクセスできるかどうかを確認するのを避けることができます。
ここで何がベストプラクティスになるかわかりません.より良いHTTPステータスコードを追求する必要がありますか(したがって、追加のdbリクエストを作成します)、または最後の2つのケース(3と4)でも403 Forbiddenが機能しますか?