Чтение онлайн

на главную - закладки

Жанры

Язык программирования C#9 и платформа .NET5
Шрифт:

{

public CreditRisksController(

ICreditRiskRepo creditRiskRepo, IAppLogging<CreditRisksController> logger)

: 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<Customer, CustomersController>

{

public CustomersController(

ICustomerRepo customerRepo, IAppLogging<CustomersController> logger)

: 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<Make, MakesController>

{

public MakesController(IMakeRepo makeRepo, IAppLogging<MakesController> logger)

: 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<Order, OrdersController>

{

public OrdersController(IOrderRepo orderRepo,

IAppLogging<OrdersController> logger) :
base(orderRepo, logger)

{

}

}

}

Итак,

все контроллеры готовы и вы можете с помощью пользовательского интерфейса Swagger протестировать полную функциональность. Если вы собираетесь добавлять/обновлять/удалять записи, тогда измените значение
RebuildDataBase
на
true
в файле
appsettings.development.json
:

{

...

"RebuildDataBase": true,

...

}

Фильтры исключений

Когда в приложении Web API возникает исключение, никакая страница со сведениями об ошибке не отображается, т.к. пользователем обычно является другое приложение, а не человек. Информация об ошибке должна быть отправлена в формате JSON наряду с кодом состояния HTTP. Как обсуждалось в главе 29, инфраструктура ASP.NET Core позволяет создавать фильтры, которые запускаются при появлении необработанных исключений. Фильтры можно применять глобально, на уровне контроллера или на уровне действия. Для текущего приложения вы построите фильтр исключений для отправки данных JSON (вместе с кодом HTTP 500) и включения трассировки стека, если сайт функционирует в режиме отладки.

На заметку! Фильтры — крайне мощное средство ASP.NET Core. В этой главе вы ознакомитесь только с фильтрами исключений, но с их помощью можно создавать очень многое, что значительно экономит время при построении приложений ASP.NET Core. Полную информацию о фильтрах ищите в документации по ссылке

https://docs.microsoft.com/ru-ru/aspnet/core/mvc/controllers/filters
.

Создание специального фильтра исключений

Создайте новый каталог под названием

Filters
и добавьте в него новый файл класса по имени
CustomExceptionFilterAttribute.cs
. Приведите операторы
using
к следующему виду:

using Microsoft.AspNetCore.Hosting;

using Microsoft.AspNetCore.Mvc;

using Microsoft.AspNetCore.Mvc.Filters;

using Microsoft.EntityFrameworkCore;

using Microsoft.Extensions.Hosting;

Сделайте класс открытым и унаследованным от

ЕхсерtionFiIterAttribute
. Переопределите метод
OnException
, как показано ниже:

namespace AutoLot.Api.Filters

{

public class CustomExceptionFilterAttribute : ExceptionFilterAttribute

{

public override void OnException(ExceptionContext context)

{

}

Поделиться:
Популярные книги

Дракон - не подарок

Суббота Светлана
2. Королевская академия Драко
Фантастика:
фэнтези
6.74
рейтинг книги
Дракон - не подарок

Бастард Императора. Том 8

Орлов Андрей Юрьевич
8. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 8

Чужая дочь

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Чужая дочь

Эра Мангуста. Том 2

Третьяков Андрей
2. Рос: Мангуст
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эра Мангуста. Том 2

Идеальный мир для Лекаря 14

Сапфир Олег
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 14

Один на миллион. Трилогия

Земляной Андрей Борисович
Один на миллион
Фантастика:
боевая фантастика
8.95
рейтинг книги
Один на миллион. Трилогия

Помещицы из будущего

Порохня Анна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Помещицы из будущего

Шлейф сандала

Лерн Анна
Фантастика:
фэнтези
6.00
рейтинг книги
Шлейф сандала

Черный маг императора 2

Герда Александр
2. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
6.00
рейтинг книги
Черный маг императора 2

Император

Рави Ивар
7. Прометей
Фантастика:
фэнтези
7.11
рейтинг книги
Император

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Князь Серединного мира

Земляной Андрей Борисович
4. Страж
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Князь Серединного мира

Чайлдфри

Тоцка Тала
Любовные романы:
современные любовные романы
6.51
рейтинг книги
Чайлдфри