2016-10-02 29 views
0

我創建的OData 4控制器的Web API 2,看起來像這樣:OData控制器是否可以包含REST方法?

public class BooksController : ODataController 
{ 
    private ICollection<Book> books; 

    public BooksController() 
    { 
     this.books = new Collection<Book>() 
     { 
      new Book() { Id = "1", Title = "B1", Price = new Money(1, "EUR") }, 
      new Book() { Id = "2", Title = "B2", Price = new Money(2, "EUR") } 
     }; 
    } 

    [EnableQuery] 
    public IQueryable<Book> Get() 
    { 
     return this.books.AsQueryable(); 
    } 
} 

問題是,當我想創建這樣一個規律的休息方法:

[HttpGet] 
[Route(("api/books"))] 
public IEnumerable<Book> GetAll([FromUri] PaginationDto paginationDto) 
{ 
... 
} 

第一種方法是無障礙請求/odata/Books。響應包含根據OData規範的數據。 第二種方法(應該)可以通過請求/api/books訪問。響應應該包含PLU對象的標準JSON數組。

我怎麼能做到這一點?

要麼我能夠創建純OData控制器或常規REST控制器(從ApiController派生),不幸的是,當請求OData路由/odata/Books時不符合OData標準。

+1

您應該能夠創建另一個從ApiController繼承的控制器,以僅包含非OData操作。這是否解決了這個問題? – Scottie

回答

0

我想出了,涉及到包括所有非OData的方法,定期的OData控制器和該控制器的OData自定義HTTP控制器選擇一個regural控制器創建一個解決方案,因爲這些都與ODataController posfixed。

相關問題