- Node.Js;
- Express;
- Typescript
Este projeto foi feito seguindo orientação da desenvolvedora Dani Leão no curso de Node.Js pela Rocketseat.
O projeto FinAPI é uma API Financeira simples, onde é possível fazer operações CRUD (Create, Read, Update, Delete) de contas, realizar depósitos, saques, ver extrato, entre outros.
A aplicação original possuia Node.Js com Express, e os códigos ficavam apenas em um arquivo.
Para exercitar a organização do projeto, decidi separar por diretórios, com controller, services e routes. Adicionei Typescript a este projeto para poder praticá-lo mais.
Como resultado, apesar de ser uma aplicação simples pude trabalhar com alguns conceitos como middleware, pude praticar o Typescript, e pude usar o raciocínio lógico para resolver problemas que apareciam.
Abaixo estão os requisitos e regras de negócio que a aplicação pedia. Em seguida, estarão listadas instruções para baixar e rodar este projeto localmente, em sua máquina. A seguir, estarão as rotas e os resultados esperados das requisições.
- Deve ser possível criar uma conta
- Deve ser possível buscar o extrato bancário do cliente
- Deve ser possível realizar um depósito
- Deve ser possível realizar um saque
- Deve ser possível buscar o extrato bancário do cliente por data
- Deve ser possível atualizar dados da conta do cliente
- Deve ser possível obter dados da conta do cliente
- Deve ser possível deletar uma conta
- Não deve ser possível cadastrar uma conta com CPF já existente
- Não deve ser possível fazer depósito em uma conta não existente
- Não deve ser possível buscar extrato em uma conta não existente
- Não deve ser possível fazer saque em uma conta não existente
- Não deve ser possível excluir uma conta não existente
- Não deve ser possível fazer saque quando o saldo for insuficiente
Você precisa ter instalado em sua máquina as ferramentas:
-
Sistema de controle versão Git,
-
Editor de texto, por exemplo, VSCode
-
API Client (para testar a API), recomendo o Insomnia
# clone o repositório usando SSH
git clone git@github.com:keilapassos/fin-api-node-js-typescript.git
# ou usando HTTPS
git clone https://github.com/keilapassos/fin-api-node-js-typescript.git
# acesse a pasta do projeto no terminal
cd fin-api-node-js-typescript
# você pode ver os códigos do projeto abrindo-o em seu editor de texto, exemplo com VSCode
code .
# instale as dependências - irá criar uma pasta 'node_modules'
npm install
# execute a aplicação em modo de desenvolvimento
npm run dev
# a aplicação iniciará na porta 3000
# acesse http://localhost:3000 no seu navegador ou API Client.
# ** Observação: apenas os métodos get podem rodar via navegador, outros métodos rodam apenas via API CLient
URL base: http://localhost:3000
# No API Client, adicione um novo HTTP Request (exemplo: POST json)
# em seguida adicione a url base com o seu endpoint, exemplo:
# POST http://localhost:3000/account
# Em todas as rotas EXCETO no endpoint <POST http://localhost:3000/account>, temos que informar o cpf em Headers
POST /account
- criado com sucesso - 201 created
- error - 400
- ao tentar cadastrar um cliente que já existe
GET /account
- sucesso - 200 ok
- obrigatório inserir CPF no headers
- error - 400
- quando o CPF do cliente não encontrado
PUT /account
- body da requisição
- sucesso - 200 ok
- obrigatório inserir CPF no headers
- error - 400
- quando o CPF do cliente não encontrado
DELETE /account
- sucesso - 200 ok
- obrigatório inserir CPF no headers
- error - 400
- quando o CPF do cliente não encontrado
GET /statement
- sucesso - 200 ok
- obrigatório inserir CPF no headers
- inicia com array vazio
- sucesso - 200 ok
- após realizar operações de débito e crédito
GET /statement/date
- sucesso - 200 ok
- obrigatório inserir CPF no headers
- obrigatório inserir query param date. O query pode ser passado tanto na url como: http://localhost:3000/statement/date?date=2022-12-01 ou pela aba query do seu API Client
- se a data não for encontrada, retorna um array vazio
- sucesso - 200 ok
- após realizar operações de depósito(crédito) e saque(débito)
POST /deposit
- sucesso - 200 ok
- obrigatório inserir CPF no headers
- depositando uma vez 50 reais
- error - 400
- quando o CPF do cliente não encontrado
POST /withdraw
withdraw = saque/retirada de dinheiro
- sucesso - 200 ok
- obrigatório inserir CPF no headers
- saque de 10 reais
- error - 400
- quando o CPF do cliente não encontrado
GET /balance
- sucesso - 200 ok
- obrigatório inserir CPF no headers
- mostra o total disponível
- error - 400
- quando o CPF do cliente não encontrado