Aula 01 – Golang para Web – Exemplo básico

Aula 01 – Golang para WebExemplo Básico

Voltar para página principal do blog

Todas as aulas desse curso

Aula 02

Golang para Web

Go para Web

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook

Link do código fluente no Pinterest

Meus links de afiliados:

Hostinger

Digital Ocean

One.com

Código da aula:  Github

Golang para Web

A biblioteca padrão do Go é excepcionalmente rica e bem feita, portanto, não é necessário um framework de terceiros.

Essa é provavelmente uma das maiores diferenças que pessoas vindas de linguagens como Python, Ruby, Java … acham surpreendente.

go-kit

O go-kit é um kit de ferramentas, não um framework.

Ele fornece algumas ferramentas para adicionar microsserviços de alto nível, como log e métricas.

Fora os vários pacotes como o gorilla/mux para roteamento, o net/http.

Mas, são pacotes e não framework.

Vamos colocar a mão na massa.

Vamos escrever um aplicativo Web básico usando go.

Para começar, crie um arquivo para colocar o código nele, ele ficará na raiz do projeto.

Chamaremos esse arquivo de main.go:

web_app/main.go

Depois de criado, abra ele e coloque o seguinte conteúdo:


package main

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

 //request handle
 func handler(w http.ResponseWriter, r *http.Request){
 	fmt.Fprint(w, "Hello world!")
 }

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

Explicação do código

O package main diz qual pacote estamos trabalhando, nesse caso, o pacote principal (main), o pacote onde a função main() está, o ponto de partida da app.

Em seguida temos os imports dos pacotes fmt, log e o net/http

Depois vem a função que manipula a solicitação, um manipulador de Request.

Esta função será usada para toda solicitação feita ao nosso servidor.

O nome da função é handler() e tem como entrada dois objetos: um escritor(writer) de resposta e um objeto solicitação(request) que não retorna nada.

Dentro da handler() nós só vamos ter a impressão através do fmt para o nosso writer de resposta.

Hello world!

Agora a função principal, main().

A função principal começa com uma chamada para http.HandleFunc(), que informa ao pacote http para manipular todas as solicitações para a raiz da web (“/“) com o manipulador.

Em seguida, vem a http.ListenAndServe(), especificando que ele deve escutar na porta 8000 em qualquer interface (“: 8000“). (Não se preocupe com o segundo parâmetro, nil, por enquanto.)

Esta função será bloqueada até o término do programa.

ListenAndServe() sempre retorna um erro quando ocorre um erro inesperado.

Para registrar esse erro, envolvemos a chamada de função com log.Fatal().

A função handler() é do tipo http.HandlerFunc(), ela extende a http.HandlerFunc().

Recebe um http.ResponseWriter e um http.Request como argumentos.

Um valor http.ResponseWriter monta a resposta ao servidor HTTP, escrevendo nele, enviamos os dados para o cliente HTTP, ou seja, o browser.

Um http.Request é uma estrutura de dados que representa a solicitação HTTP do cliente.

Executando nossa aplicação web Golang

Entre na pasta do arquivo pelo cmd ou terminal linux, com:


cd web_app/

Uma vez na pasta onde está o main.go, digite:


go run main.go

Agora acesse no browser:

localhost:8000

Você verá no browser:
Hello world!

Explorando o r.URL.Path

r.URL.Path é o componente caminho das URL de solicitação.

O final [1:] significa “crie uma sub-fatia do Path do primeiro caractere até o fim”.

Isso remove tudo no início do path, até e inclusive o “/“, ou seja, seudominio.com/, no caso do nosso exemplo, localhost/.

Vamos entender melhor com um exemplo.

Modifique o código para que fique assim:


package main

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

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hi everyone, i like %s!", r.URL.Path[1:])
}

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

Agora dê um ctr + c para parar o servidor.

Salve o arquivo com o conteúdo acima.

Agora faça o seguinte teste

Acesse novamente:

localhost:8000

Saída no Browser será:
Hi everyone, i like !

Agora se você acessar o browser passando um /apple no final da url, veja o que acontece:

localhost:8000/apple

Saída no Browser
Hi everyone, i like apple!

O r.URL.Path[1:] pega só o que vem depois do “/” na url passada.

Ficamos por aqui!

Código da aula: Github

Voltar para página principal do blog

Todas as aulas desse curso

Aula 02

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook

Link do código fluente no Pinterest

Novamente deixo meus link de afiliados:

Hostinger

Digital Ocean

One.com

Obrigado, até a próxima e bons estudos. 😉

About The Author
-

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>