Пользовательские атрибуты в .NET 6 Core API
Пользовательские атрибуты действительно полезны, я начал использовать их совсем недавно, потому что они позволяют мне создавать один из них и повторно использовать их либо в контроллере, либо в классе, либо в самом методе.
Они действительно помогают, когда вы хотите выполнить некоторые действия по обеспечению безопасности, например проверить заголовки или проверить значение параметра, который вам определенно нужен.
В моем случае мы собираемся использовать его в проекте API .NET Core, где мы собираемся проверить, содержат ли все запросы определенный заголовок.
Атрибут проверки заголовка
Итак, после того как мы создали наш классный API .NET Core, давайте создадим папку для хранения наших материалов, потому что нам нравится использовать папки.

А затем мы добавим логику в наш класс HeaderCheckAttribute.
[[[ТОК_2]]]
По сути, логика такова: сначала он проверяет заголовок с ключом x-dotnet-6-custom-attribute и, если он там, проверяет, есть ли у него значения.
Если оба этих выражения истинны, он повторно отправит BadRequestObjectResult с определенным сообщением.
Добавляем его в контроллер
Мы можем добавить эту логику в несколько мест, мы можем добавить ее непосредственно ко всему контроллеру или мы можем добавить ее к некоторым методам, мы собираемся добавить ее сначала к методам, а затем ко всему контроллеру.
Итак, давайте украсим ими класс WeatherForecastController .
[[[ТОК_6]]]
Давайте запустим проект!

У нас есть две функции: GetWeatherForecastWithCheck и GetWeatherForecastWithoutCheck, одна из них завершится неудачей, а другая — нет, но давайте проверим это на Swagger!

Как вы можете видеть, один из наших сообщений возвращает ошибку 400, а другой возвращает значения. Теперь, чтобы полностью проверить это, давайте запустим Postman и добавим заголовок, чтобы мы также видели данные, используя GetWeatherForecastWithCheck.
Почтальон
Теперь, работая в Postman, мы добавляем заголовок и видим, что сообщение об ошибке изменилось, поскольку теперь мы предоставляем заголовок, но он не имеет никакого значения.

Если мы добавим к нему значение, мы наконец получим значения!

Вот и все
Ну вот и все! Довольно просто, правда? Что ж, теперь вы знаете, как создать атрибут и назначить его методам и контроллерам!
Веселитесь с ними!
Код
Весь этот проект находится на Github, и вы можете найти его здесь!
Если у вас есть какие-либо проблемы или вопросы, не стесняйтесь обращаться ко мне в любой социальной сети по адресу @emimontesdeoca (в Твиттере на самом деле это @emimontesdeocaa с двумя aa в конце). Большую часть моих соцсетей вы также можете найти в шапке блога.
Надеюсь, вам понравился пост! Сайя!