46/100 Dias de Golang - Aplicação para buscar previsão do tempo - Parte 3
Table of Contents
#
Aplicação para buscar previsão do tempo - Parte 3
Nesse post vamos criar o comanda do tempo
, recebemos um ID de cidade e retornamos como está o tempo nela. Vamos começar alterando o arquivo tempo.go
para receber a flag cidadeID
var cidadeID string
func init() {
rootCmd.AddCommand(tempoCmd)
tempoCmd.Flags().StringVarP(&cidadeID, "cidadeID", "i", "1", "ID da cidade")
}
Agora já temos acesso ao ID da cidade, podemos montar o request para a API
func requestTempo(cidadeID string) {
url := fmt.Sprintf("https://brasilapi.com.br/api/cptec/v1/clima/previsao/%s", cidadeID)
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
log.Fatalf("Erro ao criar request: %v", err)
}
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
log.Fatalf("Erro ao fazer request: %v", err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatalf("Erro ao ler resposta: %v", err)
}
fmt.Println("Status Code:", resp.StatusCode)
fmt.Println("Body:", string(body))
}
Agora só falta chamar essa função passando o ID:
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("tempo called")
requestTempo(cidadeID)
}
Para executar podemos rodar o comando go run main.go tempo -i 227
tempo called
Status Code: 200
Body: {"cidade":"Curitiba","estado":"PR","atualizado_em":"2025-04-27","clima":[{"data":"2025-04-28","condicao":"c","condicao_desc":"Chuva","min":17,"max":20,"indice_uv":0}]}