0Pricing
Go Academy · Aula

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

  1. Fazendo requisições HTTP
  2. Definindo timeouts e cabeçalhos
  3. Decodificando respostas JSON
  4. Tratamento de errors e lógica de novas tentativas
← Voltar para Go Academy