我正在编写一个web api应用程序,我将其划分为各种项目,如Web,Services,DataAccess - 所以基本上web api控制器会联系服务层,然后可以访问数据访问层。
我只是返回一个bool,让我知道数据访问方法是否已经完成,然后在服务层中选择它然后再回到控制器...然后我可以用HTTPStatusCode 200响应,或者500等等。取决于操作是否返回了真或假。
使用HttpStatusCodes代替bool是好的做法......或者只应在Controller中使用HTTP状态代码 - 返回对调用web api的应用程序的响应,还是应该是其他的?
谢谢,
答案 0 :(得分:1)
模糊的问题,但我会尝试回答。
这实际上取决于层之间分离的原因,以及每个层所关注的内容。我会问自己的一个问题是为什么你有一个服务层?是因为它包含业务逻辑吗?是因为intent有一个选项可以在WebAPI上下文之外重用它吗?或者您希望Service层依赖于WebAPI上下文(即它是一个Web请求,而不是在winform中重用的服务。)
最有可能的是,你想要限制处理HTTP细节到控制器(恕我直言,这显然只是我的意见)。但是我不会把它当作一条坚硬而快速的规则。
答案 1 :(得分:1)
首先,课程应该尽可能少地了解周围的世界。假设您实现the repository pattern来获取数据。您的存储库(数据访问层)甚至不应该知道HTTP,也不应该期望它是Web应用程序的一部分。它唯一关心的是访问一个特定的表。
如果不了解整体情况,很难提出具体的解决方案,但您可能会考虑以下因素:
答案 2 :(得分:1)
您不应该向下或向上传播http状态代码。如果你这样做,你就会依赖于你工作的东西而难以解耦。关于N层架构的一个好处是,是的,您的Web层可能主要用于与您的服务层进行交互,但是当您想要连接本机移动应用程序来调用它或Windows服务来调用时会发生什么它,或一个桌面应用程序来调用它。你基本上是通过试图在链中持续存在这种错误来阻碍它的潜力。