Skip to content

Daniel-Lim-Apo/CSharp-ApiDataSet-Example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CSharp-ApiDataSet-Example

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

🏗️ Arquitetura do Projeto

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 texto Pessoas.csv.

🚀 Tecnologias Utilizadas

  • .NET 10
  • C#
  • Swagger (para documentação interativa da API)
  • Manipulação de arquivos texto padrão (System.IO)

⚙️ Como Executar

Pré-requisitos

Passos para rodar localmente

  1. Navegue até o diretório da aplicação (onde está o arquivo ExemploApiDataSet.csproj):
    cd src
  2. Restaure as dependências e compile o projeto:
    dotnet build
  3. Execute a API:
    dotnet run
  4. 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).

📚 Endpoints Disponíveis

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"
}

📝 Observações sobre o DataSet

  • Os dados são armazenados localmente e de forma persistente em um arquivo de texto chamado Pessoas.csv dentro 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 PessoaRepository encapsula 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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages