Como construir um servidor da Web básico em Go

Go é uma linguagem de programação empolgante para a construção de aplicativos da web modernos, bem como software de sistemas. Ele varreu o setor de tecnologia em seu lançamento e está capacitando serviços como Docker, Kubernetes, Terraform, Dropbox e Netflix.

Além disso, a coleção robusta de pacotes integrados do Go o torna uma excelente escolha para programação da web. Este artigo ensinará como escrever um servidor web básico em Go.

Importando os Pacotes Necessários

O pacote net / HTTP oferece tudo o que é necessário para a criação de servidores e clientes web. Este pacote expõe várias funções úteis para lidar com a programação da web.

Você pode importá-lo adicionando a linha abaixo na parte superior do seu código-fonte:

 import "net/http"

Também usaremos o pacote fmt para formatar strings e o pacote de log para lidar com erros. Você pode importá-los individualmente como mostrado acima ou fatorar todos os pacotes usando uma única declaração de importação:

 import (
"fmt"
"log"
"net/http"
)

Você pode continuar a escrever a função principal depois de importar os pacotes necessários. Vá em frente e salve o arquivo de origem com uma extensão .go . Se você estiver usando o Vim, use o comando abaixo para salvar e sair do Vim :

 :wq server.go

Escrevendo a função principal

Os programas Go residem na função principal, apropriadamente chamada de "principal". Você precisará implementar a chamada do servidor aqui. Adicione as seguintes linhas em seu código-fonte e veja o que elas fazem:

 func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}

Estamos definindo a função principal usando a palavra-chave func . Go tem regras rígidas quanto à colocação da chave de abertura, portanto, certifique-se de que a chave de partida esteja na linha correta. A primeira instrução em main define que todas as solicitações da web que chegam ao caminho raiz ( "/" ) serão tratadas por índice , uma função do tipo http.HandlerFunc .

A segunda linha inicia o servidor da web por meio da função http.ListenAndServe . Ele sinaliza ao servidor para ouvir continuamente as solicitações HTTP de entrada na porta 8080 da máquina host. O segundo parâmetro desta função é necessário para bloquear o programa até o final.

Como http.ListenAndServe sempre retorna um erro, estamos agrupando essa chamada em uma chamada log.Fatal . Esta instrução registra todas as mensagens de erro geradas no lado do servidor.

Implementando a função de manipulador

Como você pode ver, a função principal chama o índice da função do manipulador para processar as solicitações do cliente. No entanto, ainda não definimos esta função para nosso servidor.

Vamos adicionar as instruções necessárias para tornar a função de índice utilizável:

 func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}

Esta função usa dois argumentos diferentes do tipo http.ResponseWriter e http.Request . O parâmetro http.ResponseWriter contém a resposta do servidor à solicitação de entrada, que vem na forma de um objeto http.Request.

A função Fprintf do pacote fmt é usada para exibir e manipular strings de texto. Estamos usando isso para mostrar a resposta do servidor às nossas solicitações da web. Finalmente, o componente r.URL.Path [1:] é usado para buscar dados que vêm após o caminho raiz.

Adicionando todas as peças juntas

Seu servidor da web Go deve estar pronto assim que você adicionar todas as peças. O código deve ser semelhante ao seguinte:

 package main
import (
"fmt"
"log"
"net/http"
)
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}

A primeira linha é necessária para compilar este código de servidor da Web Go como um arquivo executável.

Construir servidores web com Go

Os robustos pacotes de biblioteca do Go facilitam a programação da web para iniciantes. Você pode desenvolver servidores da web simples rapidamente com apenas algumas linhas de código.

Além disso, os poderosos recursos de teste dessa linguagem de programação também facilitam a implementação de metodologias de programação Agile. Trata-se de um grupo de estratégias de desenvolvimento de software com base no desenvolvimento iterativo e ampla colaboração entre equipes.