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

时间:2017-04-24 12:43:27

标签: rest spring-mvc

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

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

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

我应该在哪个HTTP状态下映射InvalidStatusException

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

2 个答案:

答案 0 :(得分:0)

409 (CONFLICT)看起来合适。您也可以使用412 (PRECONDITION FAILED)422 (UNPROCESSABLE ENTITY)

答案 1 :(得分:0)

由于商业域规则被违反(如果我理解正确 - 广告系列无法激活两次),我认为403 (Forbidden)与人类可读的错误文字信息(例如“广告系列必须是草稿”)应该是好的。