Читаем Язык программирования C#9 и платформа .NET5 полностью

Приложению 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 logger) :

base(carRepo, logger)

 {

    }

  }

}

Класс CarsController расширяет базовый класс еще одним методом действия, который получает все записи об автомобилях конкретного производителя. Добавьте показанный ниже код:

///

/// Gets all cars by make

///

/// All cars for a make

/// Primary key of the make

/// Returns all cars by 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> GetCarsByMake(int? id)

{

  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.

<p id="AutBody_Root1428"><strong>Оставшиеся контроллеры</strong></p>

Все оставшиеся контроллеры, специфичные для сущностей, будут производными от класса 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 logger)

      : base(creditRiskRepo, logger)

    {

    }

  }

}

// CustomersController.cs

using AutoLot.Api.Controllers.Base;

using AutoLot.Models.Entities;

using AutoLot.Dal.Repos.Interfaces;

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT