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

на главную

Жанры

Язык программирования 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)

{

}

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

Береги честь смолоду

Вяч Павел
1. Порог Хирург
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Береги честь смолоду

Убивать чтобы жить 2

Бор Жорж
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 2

Тринадцатый

NikL
1. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
6.80
рейтинг книги
Тринадцатый

Белые погоны

Лисина Александра
3. Гибрид
Фантастика:
фэнтези
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Белые погоны

Разведчик. Заброшенный в 43-й

Корчевский Юрий Григорьевич
Героическая фантастика
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.93
рейтинг книги
Разведчик. Заброшенный в 43-й

Последняя Арена 10

Греков Сергей
10. Последняя Арена
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Последняя Арена 10

Идеальный мир для Социопата 5

Сапфир Олег
5. Социопат
Фантастика:
боевая фантастика
рпг
5.50
рейтинг книги
Идеальный мир для Социопата 5

Энфис 2

Кронос Александр
2. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 2

Ты не мой Boy 2

Рам Янка
6. Самбисты
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Ты не мой Boy 2

Под маской моего мужа

Рам Янка
Любовные романы:
современные любовные романы
5.67
рейтинг книги
Под маской моего мужа

Лорд Системы 7

Токсик Саша
7. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 7

Жандарм 4

Семин Никита
4. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Жандарм 4

Релокант. Вестник

Ascold Flow
2. Релокант в другой мир
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Релокант. Вестник

Неудержимый. Книга VIII

Боярский Андрей
8. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
6.00
рейтинг книги
Неудержимый. Книга VIII