我正在为我的API设计一个端点,每个用户只允许一次提交。在阅读规范并试图找到最佳响应后,我犹豫是否计划在用户尝试提交第二个时使用 403 - Forbidden :
10.4.4 403禁止
服务器理解请求,但拒绝履行请求。 授权无效,请求不应重复。如果 请求方法不是HEAD,服务器希望公开 为什么请求没有得到满足,它应该描述原因 因为该实体的拒绝。如果服务器不想做 此信息可供客户使用,状态代码404(不是 找到了)可以代替使用。
我总是留下这样的感觉,虽然403s意味着访问响应 - 不一定是回应状态问题的东西。它是否正确?或者我应该在这里使用更好的状态代码吗?
答案 0 :(得分:1)
我总是403
有授权/身份验证问题,所以我有点疑惑;)以下是我考虑的代码列表:
403 Forbidden
- (如上所述)409 Conflict
- 由于资源处于无法更改的给定状态,因此也可以通知用户有关问题的良好状态。只是好奇心:
410 Gone
- 请求只能发送一次,因此端点可能无法用于后续请求。我不认为这是个好主意,因为端点仍然可用,但不会处理来自特定用户的请求。嗯..可能被认为很奇怪。我保证403
或409
,最终会使用409
。 429
似乎不是一个好主意,因为它与网络(宽带,吞吐量)问题相关,而不是与资源本身相关。