在我的应用程序中,我通过rest api公开了一些功能(使用服务堆栈,但这并不重要)。
目前我想知道哪个是揭示从存储库层收到的concurency exception
问题的最佳方式。场景:
有人想从我的api那里得到一些数据:
api/orders/1
问题是,其他人同时删除了具有给定ID的订单。
Entity Framework
抛出concurency exception
,我能够在api层中捕获它,但我应该返回什么?一些不寻常的http错误或什么?或者也许有一个很好的做法来处理它?</ p>
答案 0 :(得分:2)
您可以注册Custom Exception Mapping以映射HTTP状态代码的C#例外,例如:
SetConfig(new HostConfig {
MapExceptionToStatusCode = {
{ typeof(CustomInvalidRoleException), 403 },
{ typeof(CustomerNotFoundException), 404 },
}
});
如果订单不再存在,您可以返回404 NotFound
以表明该实体不再存在。对于其他冲突,您可以返回409 Conflict
以表示与实体的当前状态存在冲突,否则如果您不希望消费者采取特定行动,则通用400 Bad Request
是合适的重播解决他们一方冲突的请求。