0

我读取的OData V4更新博客:https://blogs.msdn.microsoft.com/webdev/2014/03/13/getting-started-with-asp-net-web-api-2-2-for-odata-v4-0/OData的属性路由:一个控制器,用于多种数据类型

它提到了属性路由新添加的[ODataRoute]属性。在传统的WebApiController中,我可以通过使用多种类型的[Route]属性来指定路由。例如,假设我有两个课程Travel and Hotel。我可以有一个控制器,用于它们两者由:

public class DefaultController : WebApiController { 
[Route("travel/{id}")] 
[Route("hotel/{id}")] 
public HttpResponseMessage Get(int id) 
{ 
    // Implementation here 
} 

随着OData的堆,每个数据类型被绑定到由默认的控制器,这意味着我需要两个控制器:

public class TravelController : ODataController{ } 

public class HotelController : ODataController{ } 

那么,有使用ODataController和ODataRoute将多个数据类型路由到一个控制器的方法? (我想简单地用[ODataRoute]替换[路径],但它没有工作)

回答

2

你可以这样做,

public class MyController : ODataController 

{ 
    [HttpGet] 
    [ODataRoute("Airlines({id})")] 
    [ODataRoute("People({id})")] 
    public IHttpActionResult Get([FromODataUri] string id) 
    { 
     return Ok("Empty"+id); 
    } 
} 

我验证这一点,它工作得很好,并注意控制器名称不从任何实体集名称开始。

此外,如果您根本不想写控制器,则可以参考此库http://odata.github.io/RESTier/,它将使用单个预定义的控制器来处理所有请求。

相关问题