Это простой, предварительно настроенный проект ASP.NET Core, предназначенный для внедрения и призванный дать вам преимущество в создании спокойных API на основе трехуровневой архитектуры.
Чтобы продемонстрировать некоторые его функциональные возможности, этот проект включает в себя минималистическую и вымышленную реализацию приложения для управления проектами под названием Plantagoo.
Лично я неоднократно создавал проекты API ASP.NET Core с нуля в течение последних нескольких месяцев. Хотя известно, что технологии быстро меняются и совершенствуются, я почувствовал необходимость создать и опубликовать этот проект, чтобы иметь возможность делиться им, ссылаться на него и использовать его в будущем.
Трехуровневая архитектура с использованием библиотек классов на каждом уровне.
Асинхронные службы на основе DI, возвращающие общий объект ответа
Аутентификация и авторизация на основе JWT
Хеширование на основе PBKDF2
Глобальная обработка ошибок на основе промежуточного программного обеспечения
Конечные точки Restful API, возвращающие DTO и коды состояния HTTP.
Реализация фильтрации, пейджинга и сортировки для конечной точки API, которая возвращает списки объектов.
Реализация управления версиями конечных точек API.
Доступ к данным на основе ядра Entity Framework через объекты POCO
Сопоставление объектов с объектами на основе AutoMapper и оптимизация запросов к базе данных
Ориентированная на безопасность настройка строки подключения к базе данных и параметров JWT с помощью файлов «appsettings.json», секретов и/или переменных среды на основе среды.
Интеграционное тестирование на базе xUnit, включая настройку, заполнение и удаление выделенной базы данных.
Чтобы запустить этот проект как есть, выполните следующие действия:
Пакет SDK для .NET Core 3.1+
IDE (предпочтительно Visual Studio или Visual Studio Code)
MySQL-сервер 8.0.20+
Клонировать этот репозиторий
В корневом каталоге восстановите необходимые пакеты, выполнив:
dotnet restore
Откройте файлы appsettings.{environment}.json в проекте Plantagoo.API, чтобы настроить следующую строку подключения в соответствии с вашими потребностями (учетные данные см. в шаге 7):
server=localhost;Port=3306;database=apiSkeletonDb
В целях разработки включите секретное хранилище, запустив (если вы привыкли работать с переменными среды, перейдите к шагу 7):
dotnet user-secrets init
Если вы используете Windows, перейдите и откройте файл %APPDATA%MicrosoftUserSecrets<user_secrets_id>secrets.json .
Если вы используете Linux/macOS, перейдите и откройте файл ~/.microsoft/usersecrets/<user_secrets_id>/secrets.json .
В этот файл secrets.json добавьте следующие строки, чтобы установить параметры JWT и расширить строку подключения к базе данных, добавив имя пользователя и пароль:
"TokenSettings:Secret": "…", "TokenSettings:AccessExpirationInMinutes": "…", "DB:Username": "…", "DB:Password": "…"
Для подхода «Code-First» к созданию базы данных выполните следующую команду (убедитесь, что ваш текущий каталог — Plantagoo.Data ):
dotnet ef migrations add InitialCreate
С последующим:
dotnet ef database update
Затем создайте решение, запустив:
dotnet build
После этого запустите приложение, выполнив:
dotnet run
Запустите https://localhost:5001/swagger/index.html в своем браузере, чтобы просмотреть документацию Swagger вашего API.
.NET Core 3.1
ASP.NET Core 3.1
Entity Framework Core 3.1
АвтоМаппер
Головоломка
xUnit