ASP.NET Core 2, маршрутизация атрибутов OData v4
Можно ли достичь следующих маршрутов, используя asp.net core 2, web api, odata v4.
- / OData / контроллер / продукта /
- / OData / контроллер / продукта /{параметр}/
- / OData / контроллер / продукт /{}/ пары пользователей
- / OData / контроллер / продукт /{}/ пары компании
- / OData / контроллер / продукт / Компания /{} пары
С помощью атрибута маршрутизации, объявления функций и настройки маршрутов?
1 ответ
Решение
После долгого эксперимента с использованием атрибутов маршрутизации, функций и действий, вышеупомянутое может быть достигнуто с помощью функций OData.
Ниже приведен код для этого.
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Product>("Product");
builder.EntityType<Product>().Function("Users").Returns<Users>();
builder.EntityType<Product>().Function("Companies").Returns<Companies>();
app.UseMvc(routebuilder =>
{
routebuilder.MapODataServiceRoute( "OData", "odata", GetEdmModel());
routebuilder.EnableDependencyInjection();
}
См. Ниже для большего понимания.
Я также смог добиться этого, используя только атрибутную маршрутизацию.
app.UseMvc(b =>
{
b.MapODataServiceRoute("odata", "api/v1", GetEdmModel());
});
В контроллере:
using Microsoft.AspNet.OData.Routing;
[EnableQuery]
[ODataRoute("content/{contentId}")]
public IActionResult Get(string contentId)