【问题标题】:Usage of OData, WebApi routingOData、WebApi路由的使用
【发布时间】:2014-03-01 06:27:51
【问题描述】:

过去两周我一直在使用 Webapi 2.0 和 OData 2.0。我想知道什么时候使用OData路由和Webapi Attribute路由。

谢谢,

帕万

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      Web API 路由

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

      安装以下 nuget 包:

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

      在“WebApiConfig.cs”文件中添加以下行

      config.MapHttpAttributeRoutes();
      

      像下面这样创建你的 webapicontroller

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

      你可以像这个 URL 一样访问你的 web api:

      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);
      

      在“UsersOdataController.cs”文件中添加以下代码

      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 : 存储库类

      您可以通过以下 URL 访问您的 odata Web api:

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

      【讨论】:

        猜你喜欢
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 2018-06-29
        • 1970-01-01
        • 1970-01-01
        • 2014-04-21
        • 2014-09-26
        相关资源
        最近更新 更多