Это моя самоуверенная, постоянно работающая в процессе работы, шаблон стартера, для создания API REST.
Этот шаблон для вас, если вы просто хотите начать с кодирования, хотите уже продуманную структуру проекта, это довольно просто и быстро учиться, и работает над более мелкими и большими проектами.
app -> App and related files
├─> src -> App source
│ ├─> Web -> Entry point for API - runnable project
│ │ ├─> Controllers -> API endpoints
│ │ ├─> Extensions -> Extension methods
│ │ ├─> Interfaces -> Web project's interfaces
│ │ ├─> Mappers -> Model mappers
│ │ ├─> Middlewares -> Middlewares (e.g. global error handling)
│ │ |─> Models -> Models in and out of API
│ │ ├─> Settings -> Options pattern for App (e.g. connection strings)
│ │ ├─> Validators -> Model validation rules
│ │ ├── Program.cs -> START
│ │ └── Startup.cs -> START
│ ├─> Core -> Holds business logic
│ │ ├─> Dtos -> Data-transfer-object (used for business logic)
│ │ ├─> Entities -> Entity Framework entities for database
│ │ ├─> Interfaces -> Core project's interfaces
│ │ ├─> Mappers -> Dto and Entity mappers
│ │ ├─> Services -> Business logic services
│ └─> Infrastructure -> Data access and external services
│ ├─> Database -> Database access
│ │ ├─> Configurations -> Entity Framework table configurations
│ │ ├─> Migrations -> Entity Framework autogenerated migrations
│ │ ├─> Repositories -> Repository pattern
│ │ ├── AppDbContext.cs -> Base context
│ │ ├── AppSeed.cs -> Database seeding
│ │ └── EfRepository.cs -> Base repository
│ └─> ExternalServices -> Services that access external services (e.g. ext. email service)
└─> tests -> App tests
├── FunctionalTests -> Endpoint tests etc.
│ ├─> Tests -> All tests
│ └─> Utils -> Utility functions (e.g. test database setup)
├── IntegrationTests -> Database tests etc.
│ ├─> Tests -> All tests
│ ├─> Utils -> Utilities functions (e.g. test database setup)
├── UnitTests -> Application logic tests etc.
│ ├─> Tests -> All tests
│ ├─> Utils -> Utility functions
└── Shared -> Model builders and other shared functions for tests
dotnet tool install --global dotnet-ef
dotnet ef database update -c ApplicationDbContext -p . /src/Infrastructure/Infrastructure.csproj -s . /src/Web/Web.csprojMyWebAPITemplate.slnF5 или Debug/Start Debugging dotnet run -p . /src/Web/Когда вам необходимо создать новую миграцию (при изменении схемы базы данных), затем запустите эту команду, чтобы сообщить Entity Framework для обработки необходимых изменений схемы для базы данных.
dotnet ef migrations add NewMigrationNameHere --context ApplicationDbContext -p . /src/Infrastructure/Infrastructure.csproj -s . /src/Web/Web.csproj -o Database /Migrations Этот проект начался как мой способ справиться с информационным потоком всего, что нужно сделать при создании API с одним монолитным образом. Есть так много вещей, чтобы помнить, и есть огромное количество вариантов, которые нужно сделать. Поэтому я сделал этот шаблон для себя, чтобы хранить все практики, которые я нашел практичным, и я надеюсь, что этот шаблон также может помочь кому -то другому выучить что -то или две.
В этом шаблоне я собрал свои знания о построении API в практическом формате. Архитектурные предпочтения, выбор библиотеки и другие варианты сделаны, основанные на лучших практиках, популярности и моих собственных самоуверенных предпочтениях. Цель этого шаблона состоит в том, чтобы дать хороший базовый пример того, как построить API REST с помощью ASP.NET, которые являются масштабируемыми, простыми в мантере и содержат необходимые конфигурации и другие вкусности. Этот шаблон вдохновлен справочным приложением Microsoft Eshoponweb и многими другими.
Этот проект лицензирован на MIT - так что не стесняйтесь использовать его в любом случае. Предложения и помощь приветствуются. ?