具有无效状态的实体的业务流程异常,在 REST API 中返回什么 http 状态



假设我想在我的 RESTful API 中对进程进行建模,而Campaign只有在状态DRAFT时才能激活。

我可以定义 MVC 映射/campaigns/{id}/activate和内部方法

if (!campaign.isDraft()) {
throw new InvalidStatusException(campaign.getStatus());
}

我应该将InvalidStatusException映射到什么 HTTP 状态?

我的印象不足,500间隔服务器错误是不可接受的

409(冲突)看起来很合适。您也可以使用 412(前提条件失败)或 422(不可处理的实体)。

由于违反了业务域规则(如果我理解正确 - 活动不能激活两次),我认为403 (Forbidden)与人类可读的错误消息(如"活动必须是草稿")应该很好。

最新更新