加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – WebApi和Controller overkill

发布时间:2020-12-16 03:45:05 所属栏目:asp.Net 来源:网络整理
导读:我开始整合WebApi OData进入试验台应用.让我们保持简单,坚持使用一个域实体Customer.显然我会有一个MVC控制器.搜索得到它自己的视图模型(基于Lucene索引),这样将是单独的控制器,现在ODataController.但由于视图/编辑页面将拥有自己的视图模型,因此它们将成为
我开始整合WebApi& OData进入试验台应用.让我们保持简单,坚持使用一个域实体Customer.显然我会有一个MVC控制器.搜索得到它自己的视图模型(基于Lucene索引),这样将是单独的控制器,现在ODataController.但由于视图/编辑页面将拥有自己的视图模型,因此它们将成为自己的控制器.这开始感觉有点矫枉过正.

试图找出一个好的设计来使这个工作,并仍然使用代表实体的URL的想法. URL中的实体应该是Customer还是以某种方式根据URL params提供不同的表示形式?或者Customer / CustomerSearch / CustomerEdit应该是不同的实体(听起来不对)?

解决方法

我假设这个WebAPI应用程序将成为您要构建的ASP.NET MVC解决方案的独立解决方案.简而言之,WebAPI将是业务/域层,MVC将是表示层.

因此,在谈到WebAPI解决方案时,您只需要为上面提到的Customer示例使用单个ApiController.视图/编辑请求可以具有自己的视图模型……或者不具有.根据您如何制作视图模型,您可以为客户提供单一视图模型,或者您可以开发客户视图层次结构,其中基本视图模型包含与搜索相关的数据,而后代视图模型可以充实细节.

您的路由请求可能如下所示:

GET - /Customer/                  retrieve multiple customers 
                                  (supplying OData parameters in query string)
GET - /Customer/{id}              retrieve a single customer
PUT - /Customer/{id}              edit customer

看起来你需要的是两条路线,一条是ApiController for Customer,另外三条是你所描述的请求方法.我不建议为OData单独使用ApiController,因为该功能依赖于实体.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读