Este es mi obstinado trabajo constantemente en progreso, plantilla de inicio, para construir API REST.
Esta plantilla es para usted si solo desea comenzar con la codificación, desea una estructura de proyecto ya pensada, que es bastante simple y rápida de aprender, y funciona en proyectos cada vez más grandes bien.
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 o Debug/Start Debugging dotnet run -p . /src/Web/Cuando necesite crear una nueva migración (cuando cambie el esquema de la base de datos), ejecute este comando para decirle al marco de entidad para manejar los cambios de esquema necesarios para la base de datos.
dotnet ef migrations add NewMigrationNameHere --context ApplicationDbContext -p . /src/Infrastructure/Infrastructure.csproj -s . /src/Web/Web.csproj -o Database /Migrations Este proyecto comenzó como mi forma de manejar el flujo de información de todo lo que debe hacerse al construir API con una sola manera monolítica. Hay tantas cosas para recordar y hay una gran cantidad de opciones para tomar. Por lo tanto, hice esta plantilla, para mí, para almacenar todas las prácticas que he encontrado prácticas y espero que esta plantilla también ayude a alguien más a aprender una o dos cosas.
En esta plantilla, he recopilado mi conocimiento de la construcción de API en un formato práctico. Las preferencias arquitectónicas, las selecciones de la biblioteca y otras opciones se realizan, basadas en las mejores prácticas, popularidad y mis propias preferencias obstinadas. El propósito de esta plantilla es proporcionar un buen ejemplo básico sobre cómo construir API REST con ASP.NET que sean escalables, fáciles de mantener y contienen configuraciones necesarias y otras golosinas. Esta plantilla está inspirada en la aplicación de referencia de Microsoft EshopoB y muchas otras.
Este proyecto tiene licencia MIT, así que siéntase libre de usarlo de todos modos que desee. Las sugerencias y la ayuda son bienvenidas. ?