Este documento fornece instruções para desenvolvedores aprenderem Go Lang de forma pragmática. Ele inclui 10 lições sobre tópicos como: criando um servidor HTTP simples e avançado; escrevendo handlers; testando handlers; codificando e decodificando JSON; fazendo requisições HTTP; e conectando ao banco de dados MongoDB. O documento visa ensinar conceitos práticos de Go Lang de forma incremental e passo-a-passo.
4. Vamos começar o projeto
● Faça o fork do projeto em
github.com/wpjunior/go-course-2
● brew install go # 1.8
● Baixe seu projeto com `go get
github.com/SEU-USUARIO-GITHUB/go-cour
se-2`
Esperamos que vocês já tenham configurado o
projeto mais ou menos assim
11. Exemplos de Listening addresses
Addr Descrição
"127.0.0.1:8081" Rodará em apenas no
endereço 127.0.0.1 na porta
8081, os outros endereços
disponíveis da máquina não
acessarão a porta 8081
":8081" Rodará em todos os endereços
da máquina na porta 8081
"0.0.0.0:8081" Rodará em todos os endereços
da máquina na porta 8081
33. Lesson 5 - Encodando um JSON - Exemplo
type Person struct {
FirstName string `json:"firstName"`
LastName string `json:"lastName"`
Age int `json:"age"`
}
34. Lesson 5 - Encodando um JSON - Exemplo
type Person struct {
FirstName string `json:"firstName"`
LastName string
`json:"lastName,omitempty"`
Age int `json:"age"`
}
46. Alguns http routers famosos
Pacote Pós Const
net/http#ServeMux Vem na standard library, pode
atender casos simples de uso.
Não permite casos como
roteamento por template, regex,
nem por verbo http
httptreemux Utiliza um algoritmo usando
radix, é rápido e possui
roteamento por verbos http.
Mais um pacote para manter, no
meio a tantos pacotes de
routing.
Outros routers https://github.com/avelino/awesome-go#web-frameworks
47. Usando o Roteador HTTP standard
net/http#ServerMux
# já vão rodando um:
$ pushd 7-simple-http-decoder
48. Lesson 7 - Usando o roteador HTTP standard - Exemplo
func main() {
addr := "127.0.0.1:8081"
router := http.NewServeMux()
router.Handle("/g1", &G1Handler{})
router.Handle("/gshow", &GShowHandler{})
log.Printf("Running web server on: http://%sn", addr)
log.Fatal(http.ListenAndServe(addr, router))
}