Este é o meu opinião opinativo, constantemente trabalha em andamento, modelo de partida, para a construção de APIs de descanso.
Este modelo é para você, se você deseja começar a codificar, deseja uma estrutura de projeto já pensada, é bastante simples e rápida para aprender e funciona em projetos cada vez maiores.
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 ou Debug/Start Debugging dotnet run -p . /src/Web/Quando você precisa criar uma nova migração (quando você altera o esquema do banco de dados), execute este comando para informar à Entidade Framework para lidar com as alterações de esquema necessárias para o banco de dados.
dotnet ef migrations add NewMigrationNameHere --context ApplicationDbContext -p . /src/Infrastructure/Infrastructure.csproj -s . /src/Web/Web.csproj -o Database /Migrations Este projeto começou como minha maneira de lidar com o fluxo de informações de tudo o que precisa ser feito ao criar APIs de maneira monolítica única. Há tantas coisas a lembrar e há uma grande quantidade de opções a serem feitas. Portanto, fiz esse modelo, para mim, para armazenar todas as práticas que achei práticas e espero que esse modelo também ajude outra pessoa a aprender uma coisa ou duas.
Neste modelo, colecionei meu conhecimento do edifício da API em formato prático. As preferências arquitetônicas, as seleções de bibliotecas e outras opções são feitas, com base nas melhores práticas, popularidade e minhas próprias preferências opinativas. O objetivo deste modelo é fornecer um bom exemplo básico sobre como criar APIs REST com ASP.NET que são escaláveis, fáceis de manter e conter as configurações necessárias e outros presentes. Este modelo é inspirado no aplicativo de referência do Microsoft eShoponweb e por muitos outros.
Este projeto está licenciado pelo MIT - então sinta -se à vontade para usá -lo de qualquer maneira que desejar. Sugestões e ajuda são bem -vindas. ?