Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

Go é uma linguagem poderosa e flexível para construir aplicações web. O líquido pacote desempenha um papel essencial no ecossistema Go.

Como a maioria das linguagens de programação do lado do servidor, o Go vem com um pacote HTTP para interagir com o protocolo HTTP. O pacote Go relevante é o http pacote, um sub-pacote do líquido pacote.

O que é o pacote net/http?

O rede/http package é uma das bibliotecas padrão em Go. Ele fornece um conjunto completo de funções e tipos para construir clientes HTTP, servidores e outras operações baseadas em HTTP. Esses incluem:

  • Funções para fazer solicitações HTTP.
  • Tratamento de pedidos e respostas.
  • Servindo solicitações HTTP.
  • Objetos relacionados, como cabeçalhos e cookies.

O rede/http O pacote também suporta criptografia TLS/SSL, HTTP/2 e outros recursos avançados, tornando o pacote uma ferramenta essencial para desenvolvedores Go.

instagram viewer

Muitas bibliotecas e estruturas Go populares, desde o kit de ferramentas da web Gorilla até a estrutura da web Echo, construídas sobre o rede/http pacote.

Iniciando um servidor HTTP simples

Iniciar servidores é uma das operações básicas que você precisa entender para trabalhar com o protocolo HTTP.

Aqui está um programa para executar um servidor simples em Go:

pacote principal

importar (
"fmt"
"rede/http"
)

// handler é um típico manipulador de solicitação-resposta HTTP em Go; detalhes mais tarde
funçãomanipulador(w http. ResponseWriter, r *http. Solicitar) {
// Fprintf formata a string para um gravador
fmt. Fprintf (w, "Olá Mundo!")
}

funçãoprincipal() {
http. HandleFunc("/", manipulador)
http. OuvirEServir(":8080", nada)
}

O manipulador A função é um manipulador de solicitação-resposta típico para o http pacote. Esta função escreve a string "Hello, World!" para o gravador de resposta HTTP.

Ao executar o código e visitar http://localhost: 8080/ em um navegador da Web, você deve ver a mensagem "Hello, World!" string exibida em seu navegador.

Como lidar com solicitações e respostas

Você pode lidar com as solicitações recebidas com o HandleFunc método do http pacote. O HandleFunc O método recebe uma string de rota e uma função de manipulador.

O http. Solicitar O método é uma instância da solicitação recebida e você pode usar os vários métodos de sua instância para interagir com as solicitações da rota.

http. HandleFunc("/Usuários", função(w http. ResponseWriter, r *http. Solicitar) {
trocar r. Método {
caso"PEGAR":
// trata da requisição GET
caso"PUBLICAR":
// trata a requisição POST
padrão:
http. Erro (w, "Método de solicitação inválido", http. StatusMethodNotAllowed)
}
})

O código acima usa o http pacote para definir uma função de manipulador HTTP para o /users rota. A função do manipulador escuta solicitações HTTP recebidas na rota e as processa com base no método de solicitação (por exemplo, PEGAR, PUBLICAR, etc.)

A função do manipulador leva o ResponseWriter e Solicitar métodos como argumentos. O ResponseWriter é uma interface que ajuda o manipulador a escrever dados como resposta ao cliente, e o Solicitar é uma estrutura que contém informações sobre a solicitação recebida, como o método HTTP, URL, cabeçalhos, etc.

A função de manipulador acima usa um trocar para determinar o método de solicitação e executar diferentes blocos de código com base no método. Se o método for PEGAR, o manipulador irá manipular o PEGAR solicitar. Caso contrário, o método é PUBLICAR; ele vai lidar com o PUBLICAR solicitar.

Se o método for qualquer outra coisa, ele enviará um http. Erro com uma mensagem "Método de solicitação inválido" e um StatusMethodNotAllowedCódigo de status HTTP para o cliente.

Você pode escrever de volta strings para o cliente usando o Escrever método de sua instância do gravador que recebe uma fatia de byte de strings e grava a string.

c. Escrever([]byte("Olá Mundo!"))

Você pode usar o WriteHeader método do seu ResponseWriter instância para gravar cabeçalhos para o cliente.

c. WriteHeader (http. StatusOK)

Trabalhando com middleware HTTP

O middleware consiste em funções que interceptam solicitações HTTP recebidas para operações antes que a solicitação prossiga para a próxima função do manipulador.

Aqui está um exemplo de registro da função do manipulador de middleware em Go:

funçãologgingMiddleware(próximo http. Manipulador)http.Manipulador {
retornar http. HandlerFunc(função(w http. ResponseWriter, r *http. Solicitar) {
// loga a requisição
próximo. ServeHTTP(w, r)
// registra a resposta
})
}

O loggingMiddleware A função recebe um manipulador HTTP e retorna um novo manipulador HTTP. O manipulador HTTP retornado é uma função anônima que aceita um gravador de resposta HTTP e uma solicitação HTTP. A função registra a solicitação e chama o ServeHTTP método no próximo Manipulador HTTP, passando o gravador de resposta e a solicitação como argumentos.

Você pode lidar com funções de middleware com o Lidar método do http pacote. O Lidar O método aceita a rota e a função de middleware.

http. Lidar("/", logMiddleware (http. HandlerFunc (manipulador)))

Redirecionamentos com o pacote HTTP

O redirecionamento é uma operação popular para aplicativos da Web que encaminham os usuários a outros recursos ou páginas da Web.

Você pode redirecionar para outra página da Web usando o redirecionar método do http pacote.

http. Redirecionar (w, r, " http://example.com", http. StatusMovidoPermanentemente)

O redirecionar método leva em ResponseWriter e Solicitar instâncias, o novo URL da página e um código de status para o redirecionamento.

Você pode criar APIs complexas em Go

O http O pacote é uma ferramenta poderosa e flexível para construir APIs complexas. Você pode usar a rica biblioteca padrão do Go e outros poderosos pacotes de terceiros para adicionar funcionalidade às suas APIs, como conectividade de banco de dados e suporte para diferentes quadros.

Com o Go, você pode criar APIs escaláveis ​​e de alto desempenho que lidam com tráfego significativo de solicitações e tarefas complexas de processamento de dados com facilidade.