Criar um servidor web com Golang

Go é uma grande linguagem para criar servidores web e serviços web simples e eficientes. Ele fornece um pacote HTTP embutido que contém utilitários para criar rapidamente uma web ou servidor de arquivos.

O objetivo deste tutorial é criar um servidor web que pode aceitar um pedido GET e servir uma resposta. Usaremos o servidor para servir arquivos estáticos, atuando como um servidor de arquivos. Vamos então fazer o servidor web responder a um pedido de POST vindo de um formulário de Submissão, como um formulário de contato.,

Sem mais delongas, vamos explorar como construir o seu primeiro servidor web com Go.

configuração

você vai precisar ir Versão 1.11 ou superior para seguir este tutorial.

nesta secção, vamos criar todos os ficheiros necessários e estabelecer a estrutura correcta do ficheiro. Depois disso, vamos importar nossos pacotes para testar se a configuração funciona. Não se preocupe — a configuração é muito básica para o servidor Web Golang.

crie os seguintes ficheiros e pastas de acordo com a estrutura abaixo., O arquivo server.go fica na raiz do seu projeto, assim como o static pasta, que contém dois ficheiros HTML: index.html e form.html.

- server.go- static/- - index.html- - form.html

Agora vamos escrever algum código. Abrir o ficheiro server.go e importar os pacotes necessários. Usaremos fmtpara imprimir dados úteis para o terminal e log para imprimir erros fatais em caso de falha do servidor web.

o net/http é o pacote mais importante., Ele fornece toda a funcionalidade para criar um cliente HTTP ou implementação de servidor como um servidor Web Golang.

package mainimport ( "fmt" "log" "net/http")

por último, vamos adicionar um simples main() função server.go arquivo que imprime uma mensagem para o terminal.

func main() { fmt.Printf("Starting server at port 8080\n")}

para testar a configuração, inicie o servidor fictício com o seguinte comando.

go run server.go

se seguiu com a configuração, deverá ver o seguinte resultado no seu terminal.,

Starting server at port 8080

If all looks good, the next step is to create a web server.

iniciando um servidor web com rotas GET

nesta fase, vamos criar um servidor web que é realmente servido na porta 8080 e pode responder aos pedidos de GET recebidos.

vamos modificar o código no nosso id

função para iniciar um servidor web na porta 8080. O métodoListenAndServeé exportado pelohttppacote que importámos durante o primeiro passo. Este método permite-nos iniciar o servidor web e especificar a porta para ouvir os pedidos de entrada.,

Note que o parâmetro de porta precisa ser passado como uma cadeia de caracteres pré-definida pela pontuação do cólon. O segundo parâmetro aceita um manipulador para configurar o servidor para HTTP / 2. No entanto, isso não é importante para este tutorial, então podemos passar com segurança como o segundo argumento.

 func main() { fmt.Printf("Starting server at port 8080\n") if err := http.ListenAndServe(":8080", nil); err != nil { log.Fatal(err) }}

neste ponto, o servidor pode iniciar, mas ainda não sabe como lidar com pedidos. Precisamos passar os tratadores para o servidor para que ele saiba como responder aos pedidos de entrada e quais os pedidos a aceitar.,

usaremos a função HandleFunc para adicionar tratadores de rota ao servidor web. O primeiro argumento aceita o caminho que precisa ouvir para /hello. Aqui, você diz ao servidor para ouvir quaisquer pedidos de . O segundo argumento aceita uma função que detém a lógica de negócio para responder corretamente ao pedido.

Por padrão, esta função aceita um ResponseWriter para enviar uma resposta de volta e uma Request objeto que fornece mais informações sobre o pedido em si., Por exemplo, você pode acessar informações sobre os cabeçalhos enviados, que podem ser úteis para autenticar o pedido.

Como pode ver, o manipulador envia uma mensagem "Hello!” à medida que passamos esta resposta para o ResponseWriter.agora vamos experimentar esta configuração. Iniciar o servidor web com go run server.go e visitar . Se o servidor responder com "Hello!", você pode continuar para o próximo passo, onde você vai aprender como adicionar segurança básica para as suas rotas do servidor Web Golang.,

adicione segurança básica às rotas

escusado será dizer que a segurança é importante. Vamos explorar algumas estratégias básicas para melhorar a segurança do seu servidor Go web.

Antes de o fazermos, devemos tomar um momento para aumentar a legibilidade do nosso código. Vamos criar a função helloHandler, que detém toda a lógica relacionada com o /hello solicitação.

este manipulador utiliza o objecto Request para verificar se a localização solicitada está correcta. Este é um exemplo muito básico de como você pode usar o objeto Request.,

Se a localização estiver incorrecta, o servidor devolve um erro

ao utilizador. Para escrever um erro ao usuário, você pode usar o métodohttp.Error. Note que o códigoStatusNotFoundcorresponde a um erro de 404. Todos os códigos de estado podem ser encontrados na documentação de Golang.a seguir, adicionamos uma verificação para verificar o tipo de pedido. Se o método não corresponder a

GET, o servidor devolve um novo erro. Quando ambas as verificações passam, o Servidor Retorna sua resposta de sucesso"Hello!".,

A última coisa que precisamos fazer é modificar o handleFunc função no nosso main() função para aceitar o acima de helloHandler função.

http.HandleFunc("/hello", helloHandler)

abaixo está o código completo do seu ficheiroserver.go.a seguir, iniciaremos o servidor Web Go com go run server.go. Você pode testar sua segurança enviando um pedido de POST para usando uma ferramenta como carteiro ou cURL.

inicie um servidor web estático

neste passo, vamos criar um servidor de arquivos simples para hospedar arquivos estáticos., Esta será uma adição muito simples ao servidor web.

para ter a certeza de que temos conteúdo para servir no servidor web, vamos modificar a pasta

localizada na pastastatic. Para manter as coisas simples, basta adicionar um título ao arquivo que diz “Static Website.”Se você desejar, você pode adicionar mais arquivos ou styling arquivos para fazer o seu servidor web parecer um pouco mais agradável.

<html> <head> <title>Static Website</title> </head> <body> <h2>Static Website</h2> </body></html>

Para servir a static pasta, você terá que adicionar duas linhas de código server.go., A primeira linha de código cria o objeto servidor de arquivos usando a função FileServer. Esta função aceita um caminho no tipo http.Dir. Portanto, temos que converter o caminho de cadeia de caracteres "./static” para um http.Dir tipo de caminho.

não se esqueça de especificar o id

rota, que aceita um caminho e o servidor de ficheiros. Esta função atua da mesma forma que a funçãoHandleFunc, com algumas pequenas diferenças. Para mais informações sobre o objetoFileServer, verifique a documentação.,

é hora de experimentar o código. Acenda o servidor com go run server.goe visite . Você deve ver o cabeçalho”Static Website“.

aceite uma solicitação de envio de formulário

finalmente, o servidor web tem que responder a um envio de formulário.

vamos adicionar algum conteúdo à pasta form.html no ficheiro static. Note que o formulário de acção é enviado para /form. Isto significa que o pedido POST do formulário será enviado para ., O formulário em si pede entrada para duas variáveis: namee address.

O próximo passo é criar o manipulador para aceitar o pedido /form. form.html arquivo já está servido através do FileServer e pode ser acessado através de

First, the function has to call ParseForm() para analisar as matérias de consulta e atualização r.PostForm e r.Form. Isto permitir-nos-á aceder aos valores name e address através do método r.FormValue.,

No final da função, escrevemos ambos os valores para o ResponseWriter uso de fmt.Fprintf.

não se esqueça de adicionar a nova rota de tratamento de formulários à função main().

http.HandleFunc("/form", formHandler)

Agora, o código completo se parece com isso.

testando o manipulador de formulários

podemos testar o formulário iniciando o servidor com go run server.go. Quando o servidor iniciar, visite . Você deve ver dois campos de entrada e um botão enviar.,

quando preencher o formulário, carregue no botãosubmit. O servidor deve processar o seu pedido de POST e mostrar-lhe o resultado no id

página de resposta, como a resposta abaixo.

Se vir o resultado acima, criou com sucesso o seu primeiro servidor Web E ficheiro Golang. Meus parabéns!

Se quiser explorar mais os servidores web do Golang, a documentação do pacote HTTP do Golang está cheia de grandes exemplos., Este tutorial sobre a escrita de aplicativos web em Go é outro grande recurso que cobre a maior parte do básico.

LogRocket: visibilidade Completa de aplicativos web

LogRocket é uma aplicação frontend solução de monitoramento que permite a repetição de problemas como se eles aconteceu no seu próprio navegador. Em vez de adivinhar porque é que os erros acontecem, ou pedir aos utilizadores imagens e dumps de registo, o LogRocket permite-lhe repetir a sessão para compreender rapidamente o que correu mal., Ele funciona perfeitamente com qualquer aplicativo, independentemente do framework, e tem plugins para logar contexto adicional de Redux, Vuex e @ngrx/store.

In addition to logging Redux actions and state, LogRocket records console logs, JavaScript errors, stacktraces, network requests/responses with headers + bodies, browser metadata, and custom logs. Ele também instrumenta o DOM para gravar o HTML e CSS na página, recriando pixel-vídeos perfeitos de até mesmo os aplicativos de Página Única mais complexos.

tente de graça.

Share

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *