为“无效状态更改”返回什么 http 状态代码

mor*_*rtb 6 c# rest asp.net-core

这是一个关于最佳 REST 实践的问题。考虑下面的控制器,它有一个应该更新应用程序对象的方法。

public ApplicationController : Controller
{
    private readonly ApplicationService _applicationService;
    public ApplicationController(ApplicationService applicationService)
    {
       _applicationService = applicationService;
    }

    [HttpPost]
    public IActionResult Post([FromBodey] Application application)
    {
         var previousApplication = _applicationService.Get(applicationId)
         if(application.State == ApplicationState.Approved
             && apreviousApplcation.State != ApplicationState.Pending)
         {
              return StatusCode(*what code here*, "State have to be pending to goto approved");
         }

         _applicationSerivce.Update(application);
        return Ok();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果无法将应用程序的状态更改为新状态,最好返回什么状态代码?

Tor*_*ten 5

请查看此处https://martinfowler.com/articles/richardsonMaturityModel.html的第 3 级部分

Fowler 使用 409 Conflict 标头来指示出现问题。