Usando o pacote render
Para deixar a renderização de JSON e HTML mais simples ainda, existe o
pacote github.com/unrolled/render
. Esse pacote foi inspirado no pacote
martini-contrib/render
e é sempre minha primeira opção para renderização
nas minhas aplicações web.
package main
import (
"net/http"
"gopkg.in/unrolled/render.v1"
)
func main() {
r := render.New(render.Options{})
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
w.Write([]byte("Bem-vindo, visite as sub páginas agora."))
})
mux.HandleFunc("/data", func(w http.ResponseWriter, req *http.Request) {
r.Data(w, http.StatusOK, []byte("Alguns dados em binário aqui."))
})
mux.HandleFunc("/json", func(w http.ResponseWriter, req *http.Request) {
r.JSON(w, http.StatusOK, map[string]string{"hello": "json"})
})
mux.HandleFunc("/html", func(w http.ResponseWriter, req *http.Request) {
// Assume que existe um template em ./templates chamado "example.tmpl"
// $ mkdir -p templates && echo "<h1>Hello {{.}}.</h1>" > templates/example.tmpl
r.HTML(w, http.StatusOK, "example", nil)
})
http.ListenAndServe(":8080", mux)
}
Exercícios
- Divirta-se com todas as opções disponíveis na hora de chamar
render.New()
. - Tente usar a função helper
.yield
(usando as chaves) e um layout com templates HTML.