➜ Sobre o projeto
➜ O que aprendi
➜ Como usar
➜ Rotas
O objetivo dessa aplicação era criar uma API sem nenhuma dependência externa, apenas utilizando as bibliotecas nativas do NodeJS. Tudo foi feito utilizando 100% Javascript.
O front-end dessa API também foi feito utilizando 100% Javascript, sem arquivos HTML e CSS pré-criados.
Para visualizar o resultado acesse o repositório: joaovictornsv/http-node-api-web
Não foi utilizado nenhum banco de dados, os registros são armazenados em um arquivo users.txt
. Escolhi trabalhar com txt ao invés de JSON para ter o desafio de ler arquivos usando o Node.
Tentei utilizar, na medida do possível, o conceito da Clean Architecture, separando os arquivos em Controllers, Services e Repository.
Como o módulo http
nativo do Node não nos permite usar o request.body
, tive que adaptar minhas rotas e validar os dados passados por elas.
Além disso, a estrutura da rota também foi validada, pois diferente de bibliotecas como o ExpressJS, onde passar a string /users/:id
em uma função de request já nos permite acessar o parâmetro com facilidade, no Node esse acesso não é permitido. Para isso tive que criar modos de obtê-los.
Para os tratamentos e validações utilizei as famosas RegEx's, as quais aprendi bastante sobre como atuam durante o desenvolvimento desse projeto.
A API possui um sistema de CRUD completo (Create, Read, Update and Delete) e possui as seguintes funcionalidades:
- Listagem de usuários ou usuário único
- Criação de novo usuário
- Alteração de dados de um usuário
- Remoção de um usuário
- Validação de dados
- Validação de rotas
- Tratamento de erros usando Middlewares
- Gerador de IDs únicos
- Uso de Controller, Repository e Services
Ter que implementar cada etapa da api, desde o tratamento dos dados até o retorno da resposta para o cliente contribuiu bastante para treinar minha lógica de programação, a eficiência em resolver problemas pequenos e também a criar códigos mais legíveis e limpos. Além disso, aprendi a utilizar RegEx's para realizar várias validações no projeto. Por fim, acredito que criar essa API "pura" me fez evoluir mais um degrau nessa jornada de back-end.
# Clone this repository
$ git clone https://github.com/joaovictornsv/http-node-api
# Go into the repository
$ cd http-node-api
# Run the server
$ yarn start
Ver rotas
- Home page
/
- Get all users
/users
- Get a specific user
/users/:id
- Create a user
users/data?...
Search params:
- name
- email
- age
- city
- Update a user
users/:id/data?...
Search params:
- name
- email
- age
- city
- Delete a user
/users/:id