Fazendo requisições HTTP
GET e POST com http.NewRequest e http.DefaultClient
Fazendo requisições HTTP é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
Atalho http.Get
http.Get(url) é a maneira mais simples de fazer uma requisição GET. Sempre feche o corpo da resposta.
resp, err := http.Get("https://api.example.com/users")
if err != nil { return err }
defer resp.Body.Close()http.DefaultClient
http.Get usa o DefaultClient no nível do pacote. Em produção, crie um cliente personalizado com limites de tempo definidos.
client := &http.Client{Timeout: 10 * time.Second}
resp, err := client.Get(url)http.NewRequest para controle total
Use http.NewRequest para definir o método, os cabeçalhos e o corpo:
req, err := http.NewRequestWithContext(ctx, "POST", url, body)
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)Corpo da requisição
Passe um corpo de requisição por meio de um io.Reader. Para cargas úteis JSON, use bytes.NewBuffer(data) ou strings.NewReader.
data, _ := json.Marshal(payload)
req, _ := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(data))Verificação do status da resposta
Verifique sempre o código de status HTTP — um 4xx/5xx não é retornado como um erro do Go por padrão.
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("unexpected status: %d", resp.StatusCode)
}Decodificando a resposta JSON
Decodifique o corpo da resposta com json.Decoder para evitar lê-lo inteiro na memória primeiro:
var result APIResponse
json.NewDecoder(resp.Body).Decode(&result)Parâmetros de consulta
Crie cadeias de consulta com url.Values e anexe-as à URL:
params := url.Values{}
params.Set("page", "1")
params.Set("limit", "20")
reqURL := baseURL + "?" + params.Encode()Client.Do e transporte personalizado
Envolva http.DefaultTransport para adicionar lógica de repetição, TLS personalizado ou configurações de proxy sem perder o comportamento padrão.
O corpo da resposta deve ser fechado
Não fechar o corpo da resposta causa vazamento da conexão TCP subjacente. Use sempre defer resp.Body.Close(), inclusive para respostas de erro.
Seguindo redirecionamentos
O cliente padrão segue até 10 redirecionamentos. Defina client.CheckRedirect para personalizar ou desativar o seguimento de redirecionamentos.
Definindo User-Agent
Defina um cabeçalho User-Agent descritivo para que os registros do servidor possam identificar seu cliente:
req.Header.Set("User-Agent", "myapp/1.0 (+https://myapp.com)")Verificação rápida
Por que você deve sempre fechar o corpo da resposta HTTP?
Recapitulação: fazendo requisições HTTP
Pontos principais:
- Sempre use defer resp.Body.Close()
- Crie um http.Client personalizado com Timeout para produção
- Use http.NewRequestWithContext para o contexto e cabeçalhos personalizados
- Verifique resp.StatusCode — erros HTTP não são erros do Go
Perguntas Frequentes
A aula “Fazendo requisições HTTP” é grátis?
Sim — o texto completo de “Fazendo requisições HTTP” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Fazendo requisições HTTP”?
GET e POST com http.NewRequest e http.DefaultClient Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Fazendo requisições HTTP”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Fazendo requisições HTTP
- Definindo timeouts e cabeçalhos
- Decodificando respostas JSON
- Tratamento de errors e lógica de novas tentativas