Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/renanmav/goexpert-desafio-client-server-api
Desafio FullCycle GoExpert Client Server API
https://github.com/renanmav/goexpert-desafio-client-server-api
Last synced: about 2 months ago
JSON representation
Desafio FullCycle GoExpert Client Server API
- Host: GitHub
- URL: https://github.com/renanmav/goexpert-desafio-client-server-api
- Owner: renanmav
- Created: 2024-01-17T02:24:15.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2024-01-20T17:51:09.000Z (12 months ago)
- Last Synced: 2024-10-18T09:54:58.348Z (3 months ago)
- Language: Go
- Homepage:
- Size: 10.7 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
### Comando
> Olá dev, tudo bem?
>
> Neste desafio vamos aplicar o que aprendemos sobre webserver http, contextos,
banco de dados e manipulação de arquivos com Go.
>
> Você precisará nos entregar dois sistemas em Go:
> - client.go
> - server.go
>
> Os requisitos para cumprir este desafio são:
>
> O client.go deverá realizar uma requisição HTTP no server.go solicitando a cotação do dólar.
>
> O server.go deverá consumir a API contendo o câmbio de Dólar e Real no endereço: https://economia.awesomeapi.com.br/json/last/USD-BRL e em seguida deverá retornar no formato JSON o resultado para o cliente.
>
> Usando o package "context", o server.go deverá registrar no banco de dados SQLite cada cotação recebida, sendo que o timeout máximo para chamar a API de cotação do dólar deverá ser de 200ms e o timeout máximo para conseguir persistir os dados no banco deverá ser de 10ms.
>
> O client.go precisará receber do server.go apenas o valor atual do câmbio (campo "bid" do JSON). Utilizando o package "context", o client.go terá um timeout máximo de 300ms para receber o resultado do server.go.
>
> Os 3 contextos deverão retornar erro nos logs caso o tempo de execução seja insuficiente.
>
> O client.go terá que salvar a cotação atual em um arquivo "cotacao.txt" no formato: Dólar: {valor}
>
> O endpoint necessário gerado pelo server.go para este desafio será: /cotacao e a porta a ser utilizada pelo servidor HTTP será a 8080.
>
> Ao finalizar, envie o link do repositório para correção.### Execução
Com o deamon do Docker aberto, abra um terminal e execute o seguinte comando:
```bash
docker-compose up -d
```Inicie o servidor:
```bash
go run server.go
```Em outro terminal, execute o cliente:
```bash
go run client.go
```Verifique o arquivo `cotacao.txt` e o registro no banco de dados:
```bash
docker exec -it mysql bash
mysql -u root -p goexpert
```Digite a senha `root` para o usuário `goexpert`. Em seguida, execute o SQL:
```sql
SHOW TABLES;
DESCRIBE quotes;
SELECT * FROM quotes;
```### Resultado
O cliente irá imprimir no terminal o valor da cotação do dólar e o servidor irá imprimir no terminal o valor da cotação do dólar e o tempo de execução de cada etapa.