Este é um projeto de exemplo que demonstra a construção de uma API Web em C# utilizando .NET 10. O objetivo principal do projeto é ilustrar uma arquitetura básica separada em camadas (Controllers, Application, Domain, Infra) e o uso de um arquivo CSV (Pessoas.csv) como um banco de dados simples (DataSet) para operações de leitura e gravação.
Desenvolvido por: Daniel Lim-Apo
O projeto adota uma estrutura baseada em princípios de responsabilidade única, dividindo o código nas seguintes camadas:
- Controllers (
PessoaController.cs): Responsável por receber as requisições HTTP (GET, POST) e expor os endpoints. - Application:
ManagePessoa.cs: Orquestra as regras de negócio interligando os controllers ao domínio.LeCSVPessoas.cs/CriaCSVPessoas.cs: Lida com a lógica de manipulação direta de arquivos para geração do dataset inicial.
- Domain (
Pessoa.cs): O modelo de domínio que representa uma entidade Pessoa (Id, Nome, Telefone, Data de Nascimento). Contém lógicas úteis de conversões implícitas de e para o formato de string do CSV. - Infra (
PessoaRepository.cs): Camada de persistência de dados. Implementa o Padrão Repository (Repository Pattern) para isolar a lógica de acesso a dados, abstraindo a escrita (Append) e a leitura diretamente no arquivo de textoPessoas.csv.
- .NET 10
- C#
- Swagger (para documentação interativa da API)
- Manipulação de arquivos texto padrão (System.IO)
- .NET SDK 10.0 ou superior instalado em sua máquina.
- Navegue até o diretório da aplicação (onde está o arquivo
ExemploApiDataSet.csproj):cd src - Restaure as dependências e compile o projeto:
dotnet build
- Execute a API:
dotnet run
- A API será iniciada. Acesse a interface gráfica interativa do Swagger no seu navegador usando o link exibido no console (geralmente será algo como
http://localhost:<porta>/swagger).
A API expõe os seguintes endpoints disponíveis na interface do Swagger:
GET /Pessoa: Lê o dataset (Pessoas.csv) e retorna a lista de todas as pessoas cadastradas no formato JSON.POST /Pessoa: Recebe um objeto JSON representando uma pessoa e o insere em uma nova linha no arquivo CSV.
Exemplo de payload (JSON) para requisição POST:
{
"id": 5,
"nome": "Clark Kent",
"telefone": "5511999999999",
"dataDeNascimento": "1985-06-18"
}- Os dados são armazenados localmente e de forma persistente em um arquivo de texto chamado
Pessoas.csvdentro do diretório de execução do projeto. - O projeto faz uso do Padrão Repository (Repository Pattern). Apesar de não utilizar um banco de dados relacional tradicional, esse padrão é essencial para isolar a camada de domínio da infraestrutura. A aplicação não precisa saber dos detalhes de gravação; o
PessoaRepositoryencapsula toda a complexidade de persistir as informações no arquivo.csv. Isso facilitaria muito uma futura migração para um banco SQL de verdade sem quebrar as regras de negócio. - Com essa simplicidade, o projeto foi criado como uma opção educacional para os alunos entenderem a manipulação básica de entrada e saída de arquivos (I/O) em C# e visualizar claramente como os dados fluem através das diferentes camadas de uma API.