Construyendo aplicaciones Web con Go

Usando el paquete render

Si quieres que renderizar JSON y HTML sea aún más simple, está el paquete github.com/unrolled/render. Este paquete fue inspirado por el martini-contrib/render y es mi amparo cuando se trata de procesar datos para su presentación en mis aplicaciones 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, r *http.Request) {
        w.Write([]byte ("Bienvenido, ahora visita nuestras subpáginas."))
    })

    mux.HandleFunc ("/datos", func(w http.ResponseWriter, r *http.Request) {
        r.Data(w, http.StatusOK, []byte ("Algunos datos binarios aquí."))
    })

    mux.HandleFunc("/json", func(w http.ResponseWriter, r *http.Request) {
        r.JSON(w, http.StatusOK, map[string]string {"hola": "json"})
    })

    mux.HandleFunc("/html", func(w http.ResponseWriter, r *http.Request) {
         // asume que tienes una plantilla en ./plantillas llamada "ejemplo.tmpl"
        // $ mkdir -p plantillas && echo "<h1>Hola {{.}}.</h1>"> plantillas/ejemplo.tmpl
        r.HTML(w, http.StatusOK, "ejemplo", nil)
    })

    http.ListenAndServe(":8080", mux)
}

Ejercicios

  1. Diviértete jugando con todas las opciones disponibles al llamar a render.New().
  2. Trata de usar la función auxiliar {{.yield}} y un diseño con plantillas HTML.