假设我想在我的 RESTful API 中对进程进行建模,而Campaign
只有在状态DRAFT
时才能激活。
我可以定义 MVC 映射/campaigns/{id}/activate
和内部方法
if (!campaign.isDraft()) {
throw new InvalidStatusException(campaign.getStatus());
}
我应该将InvalidStatusException
映射到什么 HTTP 状态?
我的印象不足,500间隔服务器错误是不可接受的
409(冲突)看起来很合适。您也可以使用 412(前提条件失败)或 422(不可处理的实体)。
由于违反了业务域规则(如果我理解正确 - 活动不能激活两次),我认为403 (Forbidden)
与人类可读的错误消息(如"活动必须是草稿")应该很好。