Asp.net web api 业务逻辑布局澄清

Asp.net web api 业务逻辑布局澄清,asp.net-web-api,controller,business-logic,service-layer,Asp.net Web Api,Controller,Business Logic,Service Layer,我正在从事一个.NETWebAPI项目,在该项目中,我让Api控制器调用服务层 假设我想设置一个端点来删除一个资源(如果它存在的话)。如果未找到任何内容,则返回一条错误消息 我需要澄清一下,在执行删除之前,在哪里最好地放置用于检查项目是否存在的逻辑 具体来说,我是在控制器级别还是在服务层中执行项目存在检查 为了澄清,我可以: 一,。在服务层中有两个方法-GetItem和DeleteItem,从控制器首先调用GetItem,如果Item存在,则调用DeleteItem。如果项目不存在,我将返回一个

我正在从事一个.NETWebAPI项目,在该项目中,我让Api控制器调用服务层

假设我想设置一个端点来删除一个资源(如果它存在的话)。如果未找到任何内容,则返回一条错误消息

我需要澄清一下,在执行删除之前,在哪里最好地放置用于检查项目是否存在的逻辑

具体来说,我是在控制器级别还是在服务层中执行项目存在检查

为了澄清,我可以:

一,。在服务层中有两个方法-GetItem和DeleteItem,从控制器首先调用GetItem,如果Item存在,则调用DeleteItem。如果项目不存在,我将返回一个错误

二,。或者,我可以在服务层的DeleteItem方法中包含GetItem检查,并将其作为错误返回给控制器


上面哪一个是执行此逻辑检查的最佳位置

在服务层处理并发请求可能会更好,但这取决于DeleteItem公开的语义,在某种程度上取决于要向调用方或API公开的语义。特别是,如果有两个赛车请求删除该项目,您希望发生什么情况?假设两者都在调用DeleteItem之前通过了GetItem检查。您希望如何执行这两个请求?是否希望两个请求都报告成功?一个成功,一个失败?在服务层处理并发请求可能更好,但这取决于DeleteItem公开的语义,以及在某种程度上,您希望向调用者或API公开的语义。特别是,如果有两个赛车请求删除该项目,您希望发生什么情况?假设两者都在调用DeleteItem之前通过了GetItem检查。您希望如何执行这两个请求?是否希望两个请求都报告成功?一个成功,一个失败?