Ceci est mon opinion, fonctionne constamment en cours, modèle de démarrage, pour construire des API REST.
Ce modèle est pour vous si vous voulez juste commencer avec le codage, voulez une structure de projet déjà pensée, qui est assez simple et rapide à apprendre, et fonctionne très bien sur des projets plus petits et plus grands.
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/Lorsque vous devez créer une nouvelle migration (lorsque vous modifiez le schéma de la base de données), exécutez cette commande pour dire entité Framework pour gérer les modifications du schéma nécessaire pour la base de données.
dotnet ef migrations add NewMigrationNameHere --context ApplicationDbContext -p . /src/Infrastructure/Infrastructure.csproj -s . /src/Web/Web.csproj -o Database /Migrations Ce projet a commencé comme ma façon de gérer le flux d'informations de tout ce qui doit être fait lors de la construction d'API de manière monolithique unique. Il y a tellement de choses à retenir et il y a une grande quantité de choix à faire. Par conséquent, j'ai fait ce modèle, pour moi, pour stocker toutes les pratiques que j'ai trouvées pratiques et j'espère que ce modèle pourrait également aider quelqu'un d'autre à apprendre une chose ou deux.
Dans ce modèle, j'ai recueilli ma connaissance de la construction d'API dans un format pratique. Les préférences architecturales, les sélections de bibliothèques et autres choix sont faites, sur la base des meilleures pratiques, de la popularité et de mes propres préférences d'opinion. Le but de ce modèle est de fournir un bon exemple de base sur la façon de créer des API REST avec ASP.NET qui sont évolutives, faciles à manquer et contiennent les configurations nécessaires et autres goodies. Ce modèle est inspiré de l'application de référence Microsoft EshoponWeb et bien d'autres.
Ce projet est sous licence MIT - alors n'hésitez pas à l'utiliser de toute façon. Les suggestions et l'aide sont les bienvenues. ?