Neste projeto foi desenvolvido um sistema bancário foram utilizadas as seguintes tecnologias:
- Node JS
- Express
- Nodemon
- Api REST
O sistema permite:
- Criar conta bancária
- Listar contas bancárias
- Atualizar os dados do usuário da conta bancária
- Excluir uma conta bancária
- Depósitar em uma conta bancária
- Sacar de uma conta bancária
- Transferir valores entre contas bancárias
- Consultar saldo da conta bancária
- Emitir extrato bancário
Os dados serão persistidos em memória, no objeto existente dentro do arquivo bancodedados.js
. Todas as transações e contas bancárias deverão ser inseridas dentro deste objeto, seguindo a estrutura que já existe.
// HTTP Status 200 / 201 / 204
// 2 contas encontradas
[
{
"numero": "1",
"saldo": 0,
"usuario": {
"nome": "Foo Bar",
"cpf": "00011122233",
"data_nascimento": "2021-03-15",
"telefone": "71999998888",
"email": "foo@bar.com",
"senha": "1234"
}
},
{
"numero": "2",
"saldo": 1000,
"usuario": {
"nome": "Foo Bar 2",
"cpf": "00011122234",
"data_nascimento": "2021-03-15",
"telefone": "71999998888",
"email": "foo@bar2.com",
"senha": "12345"
}
}
]
// nenhuma conta encontrada
[]
// HTTP Status 400 / 401 / 403 / 404
{
"mensagem": "A senha do banco informada é inválida!"
}
-
Requisição - O corpo (body) deverá possuir um objeto com as seguintes propriedades (respeitando estes nomes):
- nome
- cpf
- data_nascimento
- telefone
- senha
-
Resposta
Em caso de sucesso, não deveremos enviar conteúdo no corpo (body) da resposta.
Em caso de falha na validação, a resposta deverá possuir status code apropriado, e em seu corpo (body) deverá possuir um objeto com uma propriedade mensagem que deverá possuir como valor um texto explicando o motivo da falha.
// POST /contas
{
"nome": "Foo Bar 2",
"cpf": "00011122234",
"data_nascimento": "2021-03-15",
"telefone": "71999998888",
"email": "foo@bar2.com",
"senha": "12345"
}
// HTTP Status 200 / 201 / 204
// Sem conteúdo no corpo (body) da resposta
// HTTP Status 400 / 401 / 403 / 404
{
"mensagem": "Já existe uma conta com o cpf ou e-mail informado!"
}
-
Requisição - O corpo (body) deverá possuir um objeto com todas as seguintes propriedades (respeitando estes nomes):
- nome
- cpf
- data_nascimento
- telefone
- senha
-
Resposta
Em caso de sucesso, não deveremos enviar conteúdo no corpo (body) da resposta.
Em caso de falha na validação, a resposta deverá possuir status code apropriado, e em seu corpo (body) deverá possuir um objeto com uma propriedade mensagem que deverá possuir como valor um texto explicando o motivo da falha.
// PUT /contas/:numeroConta/usuario
{
"nome": "Foo Bar 3",
"cpf": "99911122234",
"data_nascimento": "2021-03-15",
"telefone": "71999998888",
"email": "foo@bar3.com",
"senha": "12345"
{
// HTTP Status 200 / 201 / 204
// Sem conteúdo no corpo (body) da resposta
// HTTP Status 400 / 401 / 403 / 404
{
"mensagem": "O CPF informado já existe cadastrado!"
}
-
Requisição
- Numero da conta bancária (passado como parâmetro na rota)
-
Resposta
Em caso de sucesso, não deveremos enviar conteúdo no corpo (body) da resposta.
Em caso de falha na validação, a resposta deverá possuir status code apropriado, e em seu corpo (body) deverá possuir um objeto com uma propriedade mensagem que deverá possuir como valor um texto explicando o motivo da falha.
// HTTP Status 200 / 201 / 204
// Sem conteúdo no corpo (body) da resposta
// HTTP Status 400 / 401 / 403 / 404
{
"mensagem": "A conta só pode ser removida se o saldo for zero!"
}
-
Requisição - O corpo (body) deverá possuir um objeto com as seguintes propriedades (respeitando estes nomes):
- numero_conta
- valor
-
Resposta
Em caso de sucesso, não deveremos enviar conteúdo no corpo (body) da resposta.
Em caso de falha na validação, a resposta deverá possuir status code apropriado, e em seu corpo (body) deverá possuir um objeto com uma propriedade mensagem que deverá possuir como valor um texto explicando o motivo da falha.
// POST /transacoes/depositar
{
"numero_conta": "1",
"valor": 1900
}
// HTTP Status 200 / 201 / 204
// Sem conteúdo no corpo (body) da resposta
// HTTP Status 400 / 401 / 403 / 404
{
"mensagem": "O número da conta e o valor são obrigatórios!"
}
{
"data": "2021-08-10 23:40:35",
"numero_conta": "1",
"valor": 10000
}
-
Requisição - O corpo (body) deverá possuir um objeto com as seguintes propriedades (respeitando estes nomes):
- numero_conta
- valor
- senha
-
Resposta
Em caso de sucesso, não deveremos enviar conteúdo no corpo (body) da resposta.
Em caso de falha na validação, a resposta deverá possuir status code apropriado, e em seu corpo (body) deverá possuir um objeto com uma propriedade mensagem que deverá possuir como valor um texto explicando o motivo da falha.
// POST /transacoes/sacar
{
"numero_conta": "1",
"valor": 1900,
"senha": "123456"
}
// HTTP Status 200 / 201 / 204
// Sem conteúdo no corpo (body) da resposta
// HTTP Status 400 / 401 / 403 / 404
{
"mensagem": "O valor não pode ser menor que zero!"
}
{
"data": "2021-08-10 23:40:35",
"numero_conta": "1",
"valor": 10000
}
-
Requisição - O corpo (body) deverá possuir um objeto com as seguintes propriedades (respeitando estes nomes):
- numero_conta_origem
- numero_conta_destino
- valor
- senha
-
Resposta
Em caso de sucesso, não deveremos enviar conteúdo no corpo (body) da resposta.
Em caso de falha na validação, a resposta deverá possuir status code apropriado, e em seu corpo (body) deverá possuir um objeto com uma propriedade mensagem que deverá possuir como valor um texto explicando o motivo da falha.
// POST /transacoes/transferir
{
"numero_conta_origem": "1",
"numero_conta_destino": "2",
"valor": 200,
"senha": "123456"
}
// HTTP Status 200 / 201 / 204
// Sem conteúdo no corpo (body) da resposta
// HTTP Status 400 / 401 / 403 / 404
{
"mensagem": "Saldo insuficiente!"
}
{
"data": "2021-08-10 23:40:35",
"numero_conta_origem": "1",
"numero_conta_destino": "2",
"valor": 10000
}
-
Requisição - query params
- numero_conta
- senha
-
Resposta
- Saldo da conta
// HTTP Status 200 / 201 / 204
{
"saldo": 13000
}
// HTTP Status 400 / 401 / 403 / 404
{
"mensagem": "Conta bancária não encontada!"
}
-
Requisição - query params
- numero_conta
- senha
-
Resposta
- Relatório da conta
// HTTP Status 200 / 201 / 204
{
"depositos": [
{
"data": "2021-08-18 20:46:03",
"numero_conta": "1",
"valor": 10000
},
{
"data": "2021-08-18 20:46:06",
"numero_conta": "1",
"valor": 10000
}
],
"saques": [
{
"data": "2021-08-18 20:46:18",
"numero_conta": "1",
"valor": 1000
}
],
"transferenciasEnviadas": [
{
"data": "2021-08-18 20:47:10",
"numero_conta_origem": "1",
"numero_conta_destino": "2",
"valor": 5000
}
],
"transferenciasRecebidas": [
{
"data": "2021-08-18 20:47:24",
"numero_conta_origem": "2",
"numero_conta_destino": "1",
"valor": 2000
},
{
"data": "2021-08-18 20:47:26",
"numero_conta_origem": "2",
"numero_conta_destino": "1",
"valor": 2000
}
]
}
// HTTP Status 400 / 401 / 403 / 404
{
"mensagem": "Conta bancária não encontada!"
}