响应中应使用哪种HTTP状态?

时间:2019-09-17 16:11:50

标签: java rest express http https

我有一个用于资源Post的POST休息终点,只有当没有其他处于“审阅”状态的帖子时,该更新才会在Post资源上更新名为“ status”的字段。但是,如果用户在已有帖子处于审阅状态时尝试将帖子更新为“审阅”状态,应该返回什么状态?

我可以想到3种选择:

  1. 403:因为这是已处于审核状态的帖子的禁止操作。
  2. 400:由于当一个帖子已经处于“审阅”状态时,来自用户的更新帖子状态的请求,因此,更新帖子状态的请求为错误请求。
  3. 200:使用JSON数据发送OK响应,其中包含字段{成功:否,错误:“由于其他评论已在评论中,所以不允许”}

哪种是更多的REST处理方式?除了这些之外,还有其他状态可以使用吗?

1 个答案:

答案 0 :(得分:1)

带字符串响应的400(解释为什么Post是“ Bad”)是最好的选择。考虑类似

  

无法更改状态,另一条帖子已在审核中

请不要将 200(确定)用于解释某些非正常情况的主体。我经常看到这一切,并且每次都想把手指拨开!

403最适合用于权限限制,例如

  

无法更改状态,请升级您的帐户以允许更新   帖子状态

-即使这不适用于您的情况