Escribir un servidor HTTP básico es fácil usando el
paquete net/http .
|
package main
|
|
import (
"fmt"
"net/http"
)
|
Un concepto fundamental en los servidores net/http son
los manejadores (handlers). Un manejador es un objeto que implementa la
interfaz http.Handler . Una forma común de escribir
un manejador es utilizando el adaptador http.HandlerFunc
en funciones con la firma apropiada.
|
func hello(w http.ResponseWriter, req *http.Request) {
|
Las funciones que sirven como manejadores toman un
http.ResponseWriter y un http.Request como
argumentos. El escritor de respuesta se utiliza para completar la
respuesta HTTP. Aquí nuestra simple respuesta es solo
“hello\n”.
|
fmt.Fprintf(w, "hello\n")
}
|
|
func headers(w http.ResponseWriter, req *http.Request) {
|
Este manejador hace algo un poco más
sofisticado al leer todos los encabezados de la solicitud HTTP
y hacer eco de los mismos en el cuerpo de la respuesta.
|
for name, headers := range req.Header {
for _, h := range headers {
fmt.Fprintf(w, "%v: %v\n", name, h)
}
}
}
|
|
func main() {
|
Registramos nuestros manejadores en rutas del servidor usando la
función de conveniencia http.HandleFunc . Configura
el enrutador predeterminado en el paquete net/http y
toma una función como argumento.
|
http.HandleFunc("/hello", hello)
http.HandleFunc("/headers", headers)
|
Finalmente, llamamos a ListenAndServe con el puerto
y un manejador. nil le indica que use el enrutador predeterminado
que acabamos de configurar.
|
http.ListenAndServe(":8090", nil)
}
|