SupermarketAPI é uma API REST desenvolvida em .NET 9.0 com C#, projetada para realizar operações de CRUD de produtos em um ambiente de supermercado. O projeto segue os princípios da arquitetura em camadas e possui integração com ferramentas modernas de documentação, validação e testes.
- .NET 9.0
- C#
- Entity Framework Core v9.0.3
- SQL Server (banco de dados relacional)
- FluentValidation (validação de entidades)
- Swagger e Scalar (documentação da API)
- xUnit (testes de integração)
O projeto foi desenvolvido utilizando uma arquitetura em camadas, promovendo melhor organização, manutenção e escalabilidade do código.
- Aplicação: Contém os casos de uso e orquestrações entre domínio e infraestrutura.
- Domínio: Contém as entidades, interfaces e regras de negócio.
- Infraestrutura: Responsável pela persistência de dados e implementação das interfaces do domínio.
- Testes de Integração: Projeto separado que utiliza xUnit para testar os cenários de CRUD da API de Produtos.
A API conta com documentação interativa acessível via:
- Swagger UI
- Scalar
Essas ferramentas facilitam a visualização e o teste dos endpoints diretamente no navegador.
- Criar um produto
- Listar todos os produtos
- Consultar produto por ID
- Atualizar produto
- Excluir produto
- Validação robusta com FluentValidation
- Testes de integração com xUnit
-
Clone o repositório:
git clone https://github.com/seu-usuario/SupermarketAPI.git cd SupermarketAPI -
Configure a connection string no appsettings.json:
"ConnectionStrings": { "DefaultConnection": "Server=SEU_SERVIDOR;Database=SupermarketDb;Trusted_Connection=True;" }
-
Execute as migrations e atualize o banco:
dotnet ef database update
-
Inicie a aplicação:
dotnet run
-
Acesse o Swagger:
https://localhost:{porta}/swagger
Para executar os testes de integração:
cd SupermarketAPI.Tests
dotnet testSupermarketAPI/
├── Application/
├── Domain/
├── Infrastructure/
├── SupermarketAPI/ (API principal)
├── SupermarketAPI.Tests/ (Testes de Integração)
Este projeto está licenciado sob a MIT License.
Desenvolvido por Rafael Ferreira Carvalho Caffonso