Api 最合适的状态代码是什么?

Api 最合适的状态代码是什么?,api,rest,api-design,Api,Rest,Api Design,我们需要执行帐户删除。其中一个端点应该向用户的电子邮件地址发送一封信以确认删除。我在想类似的事情 POST /users/me/requests/deletion 但是,用户可能没有确认的电子邮件地址。在这种情况下,他不能删除他的帐户。在这种情况下,返回哪种状态代码最好?我们无法在409冲突、403禁止和422不可处理实体之间做出决定。就个人而言,我会选择409冲突,并用适当的消息描述问题。这是最常见的错误状态代码,在这里绝对可以使用 403禁止通常表示身份验证存在问题,但情况并非总是如此。它

我们需要执行帐户删除。其中一个端点应该向用户的电子邮件地址发送一封信以确认删除。我在想类似的事情

POST /users/me/requests/deletion

但是,用户可能没有确认的电子邮件地址。在这种情况下,他不能删除他的帐户。在这种情况下,返回哪种状态代码最好?我们无法在409冲突、403禁止和422不可处理实体之间做出决定。

就个人而言,我会选择409冲突,并用适当的消息描述问题。这是最常见的错误状态代码,在这里绝对可以使用

403禁止
通常表示身份验证存在问题,但情况并非总是如此。它可以用来禁止访问,即使凭据没有问题。因此,它可以在这里使用,但我个人认为它不适合。文档表明,
403禁止
表明服务器只是拒绝满足请求,没有任何帮助-因此在这里它可能也是一个不错的选择


422不可处理实体
表示正在发送或处理的实体存在问题。在这里,实体并不清晰可见。此错误主要表示请求本身存在问题(误用
400错误请求
)或在处理的早期阶段无法处理的实体验证问题(例如,DB约束冲突)。

我的回答有用吗?如果是,请接受/投票。