Приложению AutoLot.Api
HttpGet для получения записей Car на основе значения Make. Он будет создан в новом классе по имени CarsController. Создайте в каталоге Controllers новый пустой контроллер API под названием CarsController. Модифицируйте операторы using следующим образом:using System.Collections.Generic;
using AutoLot.Api.Controllers.Base;
using Microsoft.AspNetCore.Mvc;
using AutoLot.Models.Entities;
using AutoLot.Dal.Repos.Interfaces;
using AutoLot.Services.Logging;
using Microsoft.AspNetCore.Http;
using Swashbuckle.AspNetCore.Annotations;
Класс CarsController
BaseCrudController и определяет маршрут на уровне контроллера. Конструктор принимает специфичное для сущности хранилище и средство ведения журнала. Вот первоначальный код контроллера:namespace AutoLot.Api.Controllers
{
[Route("api/[controller]")]
public class CarsController : BaseCrudController
{
public CarsController(ICarRepo carRepo, IAppLogging
base(carRepo, logger)
{
}
}
}
Класс CarsController
///
/// Gets all cars by make
///
///
/// Primary key of the make
///
[Produces("application/json")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[SwaggerResponse(200, "The execution was successful")]
[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;
Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT