Pular para o conteúdo principal

victorstein.dev

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}]}