RESTful API para gerenciamento de Produtos e Clientes
API desenvolvida com .NET 10 como parte dos estudos na trilha backend da Rocketseat, aplicando boas práticas de arquitetura em camadas, tratamento centralizado de exceções e contratos bem definidos de comunicação.
- Visão Geral
- Arquitetura
- Tecnologias
- Estrutura do Projeto
- Como Executar
- Endpoints da API
- Tratamento de Erros
- Autor
O ProductClientHub é uma API RESTful voltada para o gerenciamento centralizado de produtos e clientes. O projeto foi concebido com foco em clareza arquitetural e separação de responsabilidades, dividindo a solução em projetos independentes que representam camadas bem definidas do sistema.
O projeto adota uma arquitetura em camadas organizada em três projetos distintos dentro da mesma solution:
┌─────────────────────────────────────────────────────────┐
│ ProductClientHub.API │
│ Controllers · Program.cs · Middlewares │
├─────────────────────────────────────────────────────────┤
│ ProductClientHub.Comunication │
│ Requests · Responses · DTOs │
├─────────────────────────────────────────────────────────┤
│ ProductClientHub.Exceptions │
│ Exceções customizadas · Tratamento global │
└─────────────────────────────────────────────────────────┘
| Camada | Responsabilidade |
|---|---|
API |
Exposição dos endpoints, configuração do pipeline HTTP e injeção de dependências |
Comunication |
Contratos de entrada e saída da API (requests e responses tipados) |
Exceptions |
Exceções de domínio customizadas e filtro global de erros |
| Tecnologia | Versão | Uso |
|---|---|---|
| .NET | 10 | Framework principal |
| ASP.NET Core | 10 | Web API |
| C# | 13 | Linguagem |
| Swagger / Scalar | 10 | Documentação interativa |
| Entity Framework Core | 10 | ORM (se aplicável) |
| Serilog | - Logs |
ProductClientHub/
│
├── ProductClientHub.API/
│ ├── Controllers/
│ │ ├── ProductController.cs
│ │ └── ClientController.cs
│ ├── Filters/
│ ├── Program.cs
│ └── appsettings.json
│
├── ProductClientHub.Comunication/
│ ├── Requests/
│ │ ├── RequestProductJson.cs
│ │ └── RequestClientJson.cs
│ └── Responses/
│ ├── ResponseProductJson.cs
│ └── ResponseClientJson.cs
│
├── ProductClientHub.Exceptions/
│ └── ExceptionsBase/
│ ├── ProductClientHubException.cs
│ └── NotFoundException.cs
│
└── ProductClientHub.slnx
- .NET 10 SDK ou superior
- Git
# 1. Clone o repositório
git clone https://github.com/Foqsz/ProductClientHub.git
# 2. Acesse a pasta raiz da solution
cd ProductClientHub
# 3. Restaure as dependências
dotnet restore
# 4. Execute a API
dotnet run --project ProductClientHub.APIA API estará disponível nos endereços abaixo:
| Ambiente | URL |
|---|---|
| HTTP | http://localhost:5000 |
| HTTPS | https://localhost:5001 |
| Swagger UI | https://localhost:5001/swagger |
A documentação interativa completa está disponível via Swagger UI após iniciar a aplicação.
| Método | Rota | Descrição |
|---|---|---|
GET |
/api/products |
Retorna todos os produtos |
GET |
/api/products/{id} |
Retorna um produto pelo ID |
POST |
/api/products |
Cadastra um novo produto |
PUT |
/api/products/{id} |
Atualiza os dados de um produto |
DELETE |
/api/products/{id} |
Remove um produto |
| Método | Rota | Descrição |
|---|---|---|
GET |
/api/clients |
Retorna todos os clientes |
GET |
/api/clients/{id} |
Retorna um cliente pelo ID |
POST |
/api/clients |
Cadastra um novo cliente |
PUT |
/api/clients/{id} |
Atualiza os dados de um cliente |
DELETE |
/api/clients/{id} |
Remove um cliente |
O projeto utiliza exceções customizadas centralizadas na camada Exceptions, garantindo respostas padronizadas em toda a API.
{
"title": "Recurso não encontrado",
"status": 404,
"errors": ["O produto com o ID informado não existe."]
}| Código | Significado |
|---|---|
200 |
Operação realizada com sucesso |
201 |
Recurso criado com sucesso |
400 |
Requisição inválida |
404 |
Recurso não encontrado |
500 |
Erro interno do servidor |
Victor Vinicius Alves de L. Souza
Backend Developer · Estudante de Análise e Desenvolvimento de Sistemas