Este é um projeto ASP.NET Core simples e pré-configurado, destinado a ser adotado e com o objetivo de fornecer uma vantagem inicial na construção de APIs tranquilas, com base na arquitetura de três camadas.
Para mostrar algumas de suas funcionalidades, este projeto vem com uma implementação minimalista e fictícia de um aplicativo de gerenciamento de projetos chamado Plantagoo.
Pessoalmente, tenho criado repetidamente projetos de API do ASP.NET Core do zero nos últimos meses. Embora se saiba que a tecnologia está mudando e melhorando rapidamente, senti a necessidade de criar e publicar este projeto para poder compartilhá-lo, referenciá-lo e desenvolvê-lo no futuro.
Arquitetura de três camadas, usando bibliotecas de classes por camada
Serviços assíncronos baseados em DI, retornando objeto de resposta genérico
Autenticação e autorização baseadas em JWT
Hash baseado em PBKDF2
Tratamento de erros globais baseado em middleware
Endpoints de API restful, retornando DTOs e códigos de status HTTP
Implementação de filtragem, paginação e classificação para endpoint de API, que retorna listas de objetos
Implementação de versionamento de endpoint de API
Acesso a dados baseado no Entity Framework Core por meio de entidades POCO
Mapeamento objeto a objeto baseado em AutoMapper e otimização de consulta de banco de dados
Configurabilidade focada na segurança da cadeia de conexão do banco de dados e parâmetros JWT por meio de arquivos „appsettings.json“ baseados em ambiente, segredos e/ou variáveis de ambiente
Testes de integração baseados em xUnit, incluindo configuração, propagação e desmontagem de banco de dados dedicado
Para colocar este projeto em funcionamento como está, sinta-se à vontade para seguir estas etapas:
SDK do .NET Core 3.1+
IDE (de preferência Visual Studio ou Visual Studio Code)
Servidor MySQL 8.0.20+
Clonar este repositório
No diretório raiz, restaure os pacotes necessários executando:
dotnet restore
Abra os arquivos appsettings.{environment}.json no projeto Plantagoo.API para personalizar a seguinte string de conexão de acordo com suas necessidades (consulte a etapa 7 para obter credenciais):
server=localhost;Port=3306;database=apiSkeletonDb
Para fins de desenvolvimento, habilite o armazenamento secreto executando (se você estiver acostumado a trabalhar com variáveis de ambiente, avance para a etapa 7):
dotnet user-secrets init
Se você estiver no Windows, vá para e abra o arquivo %APPDATA%MicrosoftUserSecrets<user_secrets_id>secrets.json .
Se você estiver no Linux/macOS, vá para e abra o arquivo ~/.microsoft/usersecrets/<user_secrets_id>/secrets.json .
Dentro deste arquivo secrets.json, adicione as seguintes linhas para definir seus parâmetros JWT e estender a string de conexão do banco de dados adicionando nome de usuário e senha:
"TokenSettings:Secret": "…", "TokenSettings:AccessExpirationInMinutes": "…", "DB:Username": "…", "DB:Password": "…"
Para uma abordagem Code-First para criar o banco de dados, execute o seguinte comando (certifique-se de que seu diretório atual seja Plantagoo.Data ):
dotnet ef migrations add InitialCreate
Seguido pela:
dotnet ef database update
Em seguida, crie a solução executando:
dotnet build
Uma vez feito isso, inicie o aplicativo executando:
dotnet run
Inicie https://localhost:5001/swagger/index.html em seu navegador para visualizar a documentação Swagger de sua API
.NET Core 3.1
ASP.NET Núcleo 3.1
Núcleo do Entity Framework 3.1
AutoMapper
Espadachim
xUnidade