Sobre • Funcionalidades • Como executar • Como testar • Rotas
O projeto tem como objetivo disponibilizar recursos para operações comuns que ocorrem dentro de um banco.
- Criar uma conta.
- Visualizar contas existentes (id, nome, saldo e data de criação).
- Pesquisar o saldo de uma conta específica.
- Realizar transferências entre diferentes contas.
- Visualizar transferências realizadas do usuário.
- Fazer login de um usuário.
Antes de começar, você vai precisar ter instalado em sua máquina o DOCKER e DOCKER-COMPOSE.
# Clone este repositório
$ git clone https://github.com/lucassantoss1701/bank-api.git
# Rode seguinte comando no terminal (root)
$ docker compose up --build -d
# ou
make run
✅ Pronto, a api estará rodando no host: (http://localhost:8000/)
Para rodar os testes temos também duas formas para conseguir rodar.
# Rode seguinte comando no terminal
$ go test ./...
# ou
make tests
Open API: http://localhost:8000/swagger/
Realiza o login de um usuário.
curl
curl --location --request POST 'http://localhost:8000/login' \
--header 'Content-Type: application/json' \
--data-raw '{
"cpf": "73249636096",
"secret": "supersecret"
}'
resposta
{
"token": "xpto"
}
Retorna as contas que foram criadas no banco.
curl
curl --location --request GET 'http://localhost:8000/accounts?limit=10&offset=0' \
--header 'Authorization: Bearer token'
resposta
[
{
"id": "0b8b418c-da4a-4856-8b6a-eec63d6c7a6d",
"name": "jaque",
"balance": 200000,
"created_at": "2023-08-13T19:02:19Z"
},
{
"id": "640f2bea-4f97-4842-b514-0cc0b23a41f5",
"name": "lucas",
"balance": 200000,
"created_at": "2023-08-13T18:51:18Z"
}
]
Cria uma nova conta.
curl
curl --location --request POST 'http://localhost:8000/accounts' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Lucas",
"cpf": "73249636096",
"secret": "supersecret",
"balance": 200000
}
'
resposta
{
"id": "0b8b418c-da4a-4856-8b6a-eec63d6c7a6d",
"name": "jaque",
"balance": 200000,
"created_at": "2023-08-13T19:02:19Z"
}
Busca o saldo de uma conta específica.
curl
curl --location --request GET 'http://localhost:8000/accounts/0b8b418c-da4a-4856-8b6a-eec63d6c7a6d/balance' \
--header 'Authorization: Bearer token'
resposta
{
"balance": 200000
}
Realiza uma transfêrencia entre a conta logada e a conta informada no request body(conta logada é identificada atráves do token).
curl
curl --location --request POST 'http://localhost:8000/transfers' \
--header 'Authorization: Bearer token' \
--header 'Content-Type: application/json' \
--data-raw '{
"destination_account":{
"id": "0b8b418c-da4a-4856-8b6a-eec63d6c7a6d"
},
"amount": 5000
}'
resposta
{
"id": "2cb151d1-b28c-44a4-90c7-3ba18ec47c9c",
"amount": 5000,
"origin_account": {
"id": "640f2bea-4f97-4842-b514-0cc0b23a41f5",
"name": "lucas"
},
"destination_account": {
"id": "0b8b418c-da4a-4856-8b6a-eec63d6c7a6d",
"name": "jaque"
},
"created_at": "2023-08-13T19:59:31Z"
}
Busca as transferências realizadas pelo usuário logado(conta logada é identificada atráves do token).
curl
curl --location --request GET 'http://localhost:8000/transfers?limit=2&offset=0' \
--header 'Authorization: Bearer token'
resposta
[
{
"id": "2cb151d1-b28c-44a4-90c7-3ba18ec47c9c",
"destination_account": {
"id": "0b8b418c-da4a-4856-8b6a-eec63d6c7a6d",
"name": "jaque"
},
"amount": 5000,
"created_at": "2023-08-13T19:59:32Z"
}
]