我正在尝试找到要返回的正确状态代码,这是我目前所想到的:
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 状态代码(从而创建额外的数据库请求)还是 403 Forbidden 也适用于最后两种情况(3 和 4)?