Desenvolvimento
Pratique com APIs de verdade - ClimaTempo
Marco Ollivier
10 de Agosto, 2023
8 min de leitura
APIsGoJavaScriptPrática
Pratique com APIs de verdade - ClimaTempo
Uma das melhores formas de aprender desenvolvimento é praticando com APIs reais. A API do ClimaTempo é perfeita para isso: é gratuita, bem documentada e oferece dados interessantes.
Por que usar APIs reais?
Trabalhar com APIs reais te prepara para desafios do mundo real:
- Rate limiting: Aprenda a lidar com limites de requisições
- Autenticação: Pratique com tokens e chaves de API
- Tratamento de erros: APIs reais falham, e você precisa estar preparado
- Dados inconsistentes: Nem sempre os dados vêm como esperado
Configurando a API do ClimaTempo
1. Obtenha sua chave de API
Acesse o site do ClimaTempo e registre-se para obter sua chave gratuita.
2. Exemplo básico em Go
package main import ( "encoding/json" "fmt" "net/http" ) type WeatherResponse struct { Data []struct { Date string `json:"date"` Text string `json:"text"` Temperature struct { Min int `json:"min"` Max int `json:"max"` } `json:"temperature"` } `json:"data"` } func getWeather(cityID string, token string) (*WeatherResponse, error) { url := fmt.Sprintf("http://apiadvisor.climatempo.com.br/api/v1/weather/locale/%s/days/15?token=%s", cityID, token) resp, err := http.Get(url) if err != nil { return nil, err } defer resp.Body.Close() var weather WeatherResponse if err := json.NewDecoder(resp.Body).Decode(&weather); err != nil { return nil, err } return &weather, nil }
3. Exemplo em JavaScript
async function getWeather(cityId, token) { try { const response = await fetch( `http://apiadvisor.climatempo.com.br/api/v1/weather/locale/${cityId}/days/15?token=${token}` ); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); return data; } catch (error) { console.error('Erro ao buscar dados do clima:', error); throw error; } }
Projetos práticos
1. Dashboard de clima
Crie um dashboard que mostra:
- Temperatura atual
- Previsão para os próximos dias
- Gráficos de temperatura
- Alertas meteorológicos
2. Bot do Telegram
Desenvolva um bot que:
- Responde com a previsão do tempo
- Envia alertas diários
- Permite consulta por cidade
3. API Gateway
Construa um gateway que:
- Agrega dados de múltiplas fontes
- Implementa cache
- Adiciona rate limiting
Boas práticas
1. Tratamento de erros
func handleAPIError(resp *http.Response) error { switch resp.StatusCode { case 401: return errors.New("token inválido") case 429: return errors.New("muitas requisições - aguarde") case 500: return errors.New("erro interno da API") default: return fmt.Errorf("erro HTTP: %d", resp.StatusCode) } }
2. Cache inteligente
type CachedWeather struct { Data *WeatherResponse Timestamp time.Time TTL time.Duration } func (c *CachedWeather) IsValid() bool { return time.Since(c.Timestamp) < c.TTL }
3. Rate limiting
import "golang.org/x/time/rate" type APIClient struct { limiter *rate.Limiter client *http.Client } func (c *APIClient) makeRequest(url string) (*http.Response, error) { if err := c.limiter.Wait(context.Background()); err != nil { return nil, err } return c.client.Get(url) }
Conclusão
Praticar com APIs reais como a do ClimaTempo te prepara para desafios reais de desenvolvimento. Comece simples e vá evoluindo seus projetos conforme ganha experiência.
Lembre-se: o importante é praticar e aprender com os erros. APIs reais são imprevisíveis, e isso é exatamente o que torna a prática valiosa.