使用OData,Web Api路由

时间:2014-02-05 01:14:58

标签: c# asp.net-web-api odata asp.net-web-api-routing

过去两周我一直在玩Web Api 2.0和OData 2.0。我想知道何时使用OData路由和Web Api属性路由。

谢谢,

2 个答案:

答案 0 :(得分:1)

Web API是用于创建HTTP端点(Web API / REST API)的通用框架。您还可以使用它来创建OData端点,这是ASP.NET Web API的一个更具体的应用程序。

因此,第一个问题是您是要创建OData端点还是其他类型的REST API。

如果要创建OData端点,请使用OData路由。否则使用“常规”Web API路由

答案 1 :(得分:1)

Web API路由

您可以使用默认路由,但如果您想定义路由模板,那么您可以使用AtrributeRouting,它使用基于约定的路由 在这种类型的路由中,您可以定义一个或多个路径模板,这些模板基本上是参数化字符串。 当框架收到请求时,它会将URI与路由模板匹配

安装以下nuget包:

"Install-Package Microsoft.AspNet.WebApi.WebHost"

在" WebApiConfig.cs"中添加以下行:文件

config.MapHttpAttributeRoutes();

创建您的webapicontroller,如下所示

[Route("api/users")]
    public HttpResponseMessage GetUsers(int userId)
    {

您可以像以下网址一样访问您的网址:

http://localhost:8080/api/users/

Web API Odata路由

当你想使用IQueryable而不是IEnumerable时,你可以使用odata

为odata安装nuget包

"Microsoft.AspNet.WebApi.OData"

在" WebApiConfig.cs"中添加以下代码文件

var modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<ViewTest>("TestOdata");
var model = modelBuilder.GetEdmModel();
config.Routes.MapODataRoute(routeName: "OData", routePrefix: "odata", model: model);

在&#34; UsersOdataController.cs&#34;中添加以下代码文件

public class TestOdataController : OdataController
    {
        //GET odata/TestOdata       
        public IQueryable<ViewTest> Get()
        {
            try
            {
                return context.View_TestRepository.GetQueryable();
            }
            catch (Exception ex)
            {
               throw ex;               
            }
        }
    }

ViewTest:查看包含所需列的模型类 View_TestRepository:存储库类

您可以通过以下网址访问odata网络API:

"http://localhost:8080/odata/TestOdata"