[SwaggerResponse(204, "No content")]
[HttpGet("bymake/{id?}")]
public ActionResult
{
if (id.HasValue && id.Value>0)
{
return Ok(((ICarRepo)MainRepo).GetAllBy(id.Value));
}
return Ok(MainRepo.GetAllIgnoreQueryFilters());
}
Атрибут HttpGet
расширяет маршрут константой bymake
и необязательным идентификатором производителя для фильтрации, например:
https://localhost:5021/api/cars/bymake/5
Сначала в методе проверяется, было ли передано значение для id
. Если нет, то получаются все автомобили. Если значение было передано, тогда с использованием метода GetAllBy()
класса CarRepo
получаются автомобили по производителю. Поскольку защищенное свойство MainRepo
базового класса определено с типом IRepo
, его потребуется привести к типу ICarRepo
.
Оставшиеся контроллеры
Все оставшиеся контроллеры, специфичные для сущностей, будут производными от класса BaseCrudController
, но без добавления дополнительной функциональности. Добавьте в каталог Controllers
еще четыре пустых контроллера API с именами CreditRisksController
, CustomersController
, MakesController
и OrdersController
.
Вот код оставшихся контроллеров:
// CreditRisksController.cs
using AutoLot.Api.Controllers.Base;
using AutoLot.Models.Entities;
using AutoLot.Dal.Repos.Interfaces;
using AutoLot.Services.Logging;
using Microsoft.AspNetCore.Mvc;
namespace AutoLot.Api.Controllers
{
[Route("api/[controller]")]
public class CreditRisksController
: BaseCrudController
{
public CreditRisksController(
ICreditRiskRepo creditRiskRepo, IAppLogging
: base(creditRiskRepo, logger)
{
}
}
}
// CustomersController.cs
using AutoLot.Api.Controllers.Base;
using AutoLot.Models.Entities;
using AutoLot.Dal.Repos.Interfaces;
using AutoLot.Services.Logging;
using Microsoft.AspNetCore.Mvc;
namespace AutoLot.Api.Controllers
{
[Route("api/[controller]")]
public class CustomersController : BaseCrudController
{
public CustomersController(
ICustomerRepo customerRepo, IAppLogging
: base(customerRepo, logger)
{
}
}
}
// MakesController.cs
using AutoLot.Api.Controllers.Base;
using AutoLot.Models.Entities;
using Microsoft.AspNetCore.Mvc;
using AutoLot.Dal.Repos.Interfaces;
using AutoLot.Services.Logging;
namespace AutoLot.Api.Controllers
{
[Route("api/[controller]")]
public class MakesController : BaseCrudController
{
public MakesController(IMakeRepo makeRepo, IAppLogging
: base(makeRepo, logger)
{
}
}
}
// OrdersController.cs
using AutoLot.Api.Controllers.Base;
using AutoLot.Dal.Repos.Interfaces;
using AutoLot.Models.Entities;
using AutoLot.Services.Logging;
using Microsoft.AspNetCore.Mvc;
namespace AutoLot.Api.Controllers
{
[Route("api/[controller]")]
public class OrdersController : BaseCrudController
{
public OrdersController(IOrderRepo orderRepo,
IAppLogging
base(orderRepo, logger)
{
}
}
}