使用ODATA,WebAPI路由



我过去2周一直使用WebAPI 2.0和ODATA 2.0。我想知道何时使用ODATA路由和WebAPI属性路由。

谢谢,

帕文

Web API是用于创建HTTP端点(Web API/REST API)的一般框架。您也可以使用它来创建ODATA端点,这是ASP.NET Web API的更具体应用。

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

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

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

在您的" userodatacontroller.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:存储库类

您可以按照网址访问ODATA Web API:

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

最新更新