Я создал 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();
}
}
Проблема заключается в том, когда я хочу создать регулярный метод REST, как это:
[HttpGet]
[Route(("api/books"))]
public IEnumerable<Book> GetAll([FromUri] PaginationDto paginationDto)
{
...
}
Первый метод доступный запрос /odata/Books
. Ответ содержит данные в соответствии со спецификацией OData. Второй способ (должен быть) доступен по запросу /api/books
. Ответ должен содержать стандартный массив JSON объектов PLU.
Как я мог достичь этого?
Либо я могу создать чистый контроллер OData или обычный контроллер REST (полученный от ApiController), который, к сожалению, не соответствует стандарту OData при запросе маршрута OData /odata/Books
.
Вы должны иметь возможность создать другой контроллер, наследующий от ApiController, чтобы содержать только операции, отличные от OData. Это решение проблемы? – Scottie