Aplicação Full-stack desenvolvida para cotação atual do dólar e listagem das cotações do dólar em um determinado período.
Antes de iniciar é necessário que você já tenha a ferramenta Git instalada.
# Clone este repositório
$ git clone https://github.com/ViniciusHP/desafio-cotacao-dolar.git
# Acesse a pasta deste projeto por meio do terminal
$ cd desafio-cotacao-dolar
API desenvolvida em Spring Boot para cotação do dólar. Foi utilizada a API externa AwesomeAPI para obtenção dos dados de cotações.
- Java 11 ou versões superiores ( versão utilizada: 14.0.1 )
- Maven ( utilizei o Maven Wrapper que vem com o Spring )
- PostgreSQL ( versão utilizada: 14.0-1 )
No banco de dados PostgreSQL, crie um DATABASE chamado dolar-api
. No script a seguir, foi criado com o usuário padrão postgres
:
create database "dolar-api"
WITH
OWNER = postgres
ENCODING = 'UTF8'
CONNECTION LIMIT = -1;
A tabela para guardar a cotação do dólar será criada pela própria aplicação, através do Flyway. Caso ocorra algum contratempo, o script de criação da tabela está na pasta dolar-api/src/main/resources/db/migration
.
O usuário do banco de dados utilizado foi o postgres
com a senha root
. Caso seja necessário alterá-los, modifique o arquivo dolar-api/src/main/resources/application-dev.yml
, alterando o valor dos campos username
e password
.
O Tomcat irá iniciar por padrão na porta 8080
. Caso seja necessário alterá-la, altere a propriedade port
do arquivo dolar-api/src/main/resources/application.yml
.
A configuração do CORS irá permitir a origem http://localhost:4200
por padrão. É possível alterá-la através da propriedade origem-permitida
do arquivo dolar-api/src/main/resources/application.yml
ou, ao rodar o projeto, modificando a origem permitida através da linha de comando.
Exemplo:
$ ./mvnw spring-boot:run -Dspring-boot.run.arguments=--origem-permitida=http://localhost:8000
# Acesse a pasta do back-end por meio do terminal
$ cd dolar-api
# Execute o projeto (utilizando o maven wrapper)
$ ./mvnw spring-boot:run
# ou
# Execute o projeto (com o maven instalado)
$ mvn spring-boot:run
O projeto possui 2 end-points, um para cotação atual e outro para fazer listagem de cotações no período especificado.
Executar requisição HTTP GET em: http://localhost:8080/dolar/atual
Exemplo de retorno:
Código de Status: 200 OK
{
"valor": "5.68",
"data": "21/10/2021 - 14:45:55",
"diferenca": null
}
Se a API não conseguir buscar o valor atual da cotação e não existir nenhum registro no banco de dados, será retornado:
Código de Status: 404 Not Found
{
"mensagem": "A cotação atual do dólar não foi encontrada."
}
Executar requisição HTTP GET em: http://localhost:8080/dolar?data-inicial={data-inicial}&data-final={data-final}&page={page}&size={size}
.
Este end-point suporta paginação.
Parâmetros de requisição:
data-inicial
: Data de inicio do período no formato AAAA-MM-DD;data-final
: Data de fim do período no formato AAAA-MM-DD;size
: Número de dados que virão nesta paginação (se não for informado será 20);page
: Índice da página (se não for informado será 0).
Exemplo de retorno para requisição HTTP GET em: http://localhost:8080/dolar?data-inicial=2021-10-01&data-final=2021-10-20&page=0&size=10
:
Código de Status: 200 OK
{
"content": [
{
"valor": "5.52",
"data": "20/10/2021 - 15:38:35",
"diferenca": "-0.16"
},
{
"valor": "5.56",
"data": "20/10/2021 - 14:32:18",
"diferenca": "-0.12"
},
{
"valor": "5.55",
"data": "20/10/2021 - 13:33:10",
"diferenca": "-0.13"
},
{
"valor": "5.55",
"data": "20/10/2021 - 11:39:34",
"diferenca": "-0.13"
},
{
"valor": "5.58",
"data": "20/10/2021 - 09:31:30",
"diferenca": "-0.10"
},
{
"valor": "5.58",
"data": "20/10/2021 - 09:01:03",
"diferenca": "-0.10"
},
{
"valor": "5.58",
"data": "19/10/2021 - 17:55:48",
"diferenca": "-0.10"
},
{
"valor": "5.59",
"data": "19/10/2021 - 16:19:22",
"diferenca": "-0.09"
},
{
"valor": "5.61",
"data": "19/10/2021 - 16:14:22",
"diferenca": "-0.07"
},
{
"valor": "5.61",
"data": "19/10/2021 - 16:12:02",
"diferenca": "-0.07"
}
],
"pageable": {
"sort": {
"empty": true,
"sorted": false,
"unsorted": true
},
"offset": 0,
"pageNumber": 0,
"pageSize": 10,
"unpaged": false,
"paged": true
},
"last": false,
"totalPages": 14,
"totalElements": 131,
"number": 0,
"size": 10,
"sort": {
"empty": true,
"sorted": false,
"unsorted": true
},
"first": true,
"numberOfElements": 10,
"empty": false
}
Se alguma data não for informada a resposta será:
Código de Status: 400 Bad Request
{
"mensagem": "O parâmetro de requisição 'data-inicial' é obrigatório."
}
Código de Status: 400 Bad Request
{
"mensagem": "O parâmetro de requisição 'data-final' é obrigatório."
}
Este projeto foi construído com as seguintes ferramentas/tecnologias:
Front-end desenvolvido em Angular para consumo da API desenvolvida em Spring Boot para cotação do dólar.
- NodeJS ( versão utilizada: 14.17.0 )
- Npm ( versão utilizada: 7.16.0 )
- Angular CLI ( versão utilizada: 12.0.5 )
Por padrão, a aplicação vai buscar os dados em nosso back-end no endereço http://localhost:8080
. Para alterá-lo, modifique a propriedade apiUrl
do arquivo dolar-ui/src/environments/environment.ts
.
# Acesse a pasta do front-end por meio do terminal
$ cd dolar-ui
# Instale as dependências deste projeto
$ npm install
# Execute o projeto em modo de desenvolvimento
$ npm start
# ou
$ ng serve
# O servidor de desenvolvimento será iniciado na porta 4200
# Para acessar o projeto, navegue para http://localhost:4200
# Para alterar a porta do servidor de desenvolvimento utilize a opção --port seguida do número da porta
$ ng serve --port 8000
Este projeto foi construído com as seguintes ferramentas/tecnologias: