6

我开始将 WebApi 和 OData 集成到测试台应用程序中。让我们保持简单,并坚持使用一个域实体,客户。显然我会有一个 MVC 控制器。搜索得到它自己的视图模型(基于 Lucene 索引),所以这将是单独的控制器,现在是 ODataController。但由于视图/编辑页面将有自己的视图模型,它们将成为自己的控制器。这开始感觉像是矫枉过正。

试图找出一个好的设计来完成这项工作,并且仍然使用代表实体的 URL 的想法。URL 中的实体是否应该是 Customer 并且我以某种方式基于 URL 参数提供不同的表示?或者 Customer/CustomerSearch/CustomerEdit 应该是不同的实体(这听起来不对)?

4

1 回答 1

0

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

因此,在谈到 WebAPI 解决方案时,您只需要一个ApiController用于上面介绍的 Customer 示例。查看/编辑请求可能有自己的视图模型......或没有。根据您制作视图模型的方式,您可能能够为客户提供单个视图模型,或者您可以开发客户视图层次结构,其中基本视图模型保存与搜索相关的数据,而后代视图模型充实细节.

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

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

看起来您将需要两条路线,一条ApiController用于客户,三种请求方法用于您描述的内容。我不建议ApiController为 OData 单独使用,因为该功能取决于实体。

于 2013-03-18T00:42:12.370 回答