Este projeto contém dois programas escritos em Go:
client.go: um cliente HTTP que requisita a cotação do servidor e salva o resultado em um arquivo local.server.go: um servidor HTTP que consulta a cotação do dólar (USD-BRL), salva no banco SQLite e responde ao cliente.
- Go 1.24+ instalado
- Git
- SQLite3
Clone o repositório:
git clone https://github.com/m4rcelotoledo/client-server-api.git
cd client-server-apiInstale as dependências do projeto:
go mod tidyAbra um terminal e rode o servidor:
make run-serverO servidor estará disponível na porta 8080, no endpoint:
http://localhost:8080/cotacao
Em outro terminal, rode o cliente:
make run-clientO cliente fará uma requisição para o servidor e irá:
- Exibir o valor da cotação no terminal
- Criar um arquivo
cotacao.txtcom o seguinte conteúdo:
Dólar: <valor>
| Comando | O que faz |
|---|---|
make run-server |
Executa o servidor |
make run-client |
Executa o client |
make build-server |
Compila o server (gera binário ./server) |
make build-client |
Compila o client (gera binário ./client) |
make clean |
Remove binários e arquivos gerados |
| Componente | Timeout |
|---|---|
| Requisição do Server para a API de câmbio | 200ms |
| Gravação da cotação no banco SQLite | 10ms |
| Requisição do Client para o Server | 300ms |
Todos os contextos disparam erros nos logs caso o tempo se esgote.
Ao rodar o servidor, será criado um banco SQLite (cotacoes.db) com a tabela:
CREATE TABLE IF NOT EXISTS cotacoes (
id INTEGER PRIMARY KEY,
bid TEXT,
created_at DATETIME
);Cotação salva com sucesso: 5.4231
Exemplo de conteúdo do arquivo:
Dólar: 5.4231
Verifique os registros salvos:
sqlite3 cotacoes.db
sqlite> SELECT * FROM cotacoes;Desenvolvido por Marcelo Toledo durante o curso Pós Go Expert - FullCycle.