Uma API .Net 5.0
. Que possuir Swagger, Sistema de login com tokens JWT, Serilog, DOCKER, entre outros, implementados.
- Realize o download do .Net 5 SDK e Visual Studio/Code.
- Vá para a pasta RestWithASPNETUdemy e rode esse seguinte comando:
dotnet run
Para roda o projeto pela linha de comando.
- Você vai precisar de uma instância do MsSQL rodando, com as migrations propriamente inicializadas.
- Você pode simplesmente rodar o banco de dados no docker. Para isso, você precisa alterar a connection string para "Server=db;DataBase=rest_with_asp_net_udemy;Uid=root;Pwd=docker;SslMode=none" e rodar o comando a seguir:
docker-compose up -d db
. Fazendo isso, a aplicação estará apta para se conectar ao container do servidor de banco de dados. download das imagens em docker:
- Você pode simplesmente rodar o banco de dados no docker. Para isso, você precisa alterar a connection string para "Server=db;DataBase=rest_with_asp_net_udemy;Uid=root;Pwd=docker;SslMode=none" e rodar o comando a seguir:
link da imagem da Aplicação em docker: https://hub.docker.com/repository/docker/artarthur87333/rest-with-asp-net-udemy/general
link da imagem do banco de dados MySql em docker: https://hub.docker.com/repository/docker/artarthur87333/rest-with-asp-net-udemy-db/general
Neste projeto, algumas rotas precisam de autenticação/autorização. Para isso, você terá que utilizar a rota api/auth/v1/signin
para obter o JWT.
Por padrão, você tem um usuário disponívei para login:
- Usuário normal:
- userName: leandro
- password: "admin123"
Depois disso, você pode passar o JWT clicando no cadeado (se estiver usando swagger) ou via o cabeçalho Authorization
se tiver realizando uma requisição http.
- Integração com o Banco de Dados MySql
- Versionamento de Endpoints
- Arquitetura em Camadas
- Migrations com Envolve
- Generic Repository
- Value Object (VO)
- Custom Serialization
- Content Negociation
- HATEOAS
- Swagger (OpenAPI)
- CORS (Cross-origin resource sharing)
- Autenticação com tokens JWT
- Query Params e Paged Search (ou paginação)
- Trabalhando com Arquivos
- Consumindo a API com ReactJS
- SwaggerUI
- EntityFramework
- Injeção de Dependência
- Business: a camada responsável por tratar das regras de negocios da Api fazendo chamadas diretamente para a camada Repository ou converte os dados do banco para VO (Value object)
- ci: pasta responsável com guarda um script chamado init_database.sh cujo o proposito desse script é exercutar cada migration e dataseed da camada db que é rodado caso você subar o projeto em sua máquina local com docker.
- Configurations: a camada que contém uma class chamada TokenConfiguration que esse class contém os atributos de configuração do token JWT.
- Controllers: a camada que vai receber as requisições em Http do client.
- Data : a camada que tabalha com o VO (value object) da aplicação.
- db: a camada que guarda outras duas pastas dataset e migrations. Essas duas pastas contém as queries que seram exercutadas no banco de dados pela ferramenta de migrations Envolve.
- Hypermedia: é a camada que contém toda estrutura do hateoas da aplicação.
- Model: é a camada que contém as entidades da aplicação que o ORM EntityFramework usar para mapear os objetos para o banco de dados da aplicação.
- Repository: é a camada que mexer diretamente com o banco de dados.
- Services: é a camada que Gerar os tokens JWT e outras coisas relacionadas também.
- UploadDir: camada que persistir/salvar as fotos e arquivos recebidos pela rota
api/file/v1/
- Altere o dockerfile e docker-compose.yml de acordo com os novos nomes de csproj/pasta.
- Dê uma estrela a este repositório!
Para rodar as migrations do projeto foi usado a ferramenta de migrations Envolve.
- Vá para o arquivo Startup.cs e descomente o método MigrateDatabase que se encontra atualmente na linha 107 desse arquivo e rode o projeto.
Se este template foi útil para você ou se você aprendeu algo, por favor dê uma estrela! ⭐