Construyendo aplicaciones web con Go
Enviado por Juliana Pineda Fajardo • 15 de Septiembre de 2016 • Práctica o problema • 265 Palabras (2 Páginas) • 226 Visitas
Construyendo aplicaciones web con Go
¡Bienvenido a la construcción de aplicaciones web con Go! Si estás leyendo esto, entonces acabas de comenzar tu
viaje desde novato hasta profesional. No, en serio, la programación web en Go es tan divertida y fácil que ¡ni siquiera te
darás cuenta de la cantidad de información que sin proponértelo estás aprendiendo!
Ten en cuenta que todavía hay partes de este libro que están incompletas y es necesario que las veas con un poco de
cariño. La belleza de la publicación de código abierto es que te puedo entregar un libro incompleto y todavía te resulta útil.
Antes de profundizar en los detalles de los aspectos esenciales, vamos a empezar con algunas reglas básicas:
Requisitos previos
Para mantener este tutorial conciso y enfocado, estoy asumiendo que estás preparado de la siguiente manera:
1. Instalaste el Lenguaje de programación Go.
2. Configuraste la variable de entorno GOPATH siguiendo el tutorial cómo escribir código Go.
3. Estás familiarizado con los conceptos básicos de Go. (El paseo por Go es un muy buen lugar para empezar)
4. Tienes instalados todos los paquetes necesarios
5. Instalaste el Heroku Toolbelt
6. Tienes una cuenta Heroku
Puedes instalar (o actualizar) estos paquetes ejecutando la siguiente orden en la consola
go get -u <ruta_de_importación>
Por ejemplo, si quieres instalar Negroni, debes usar la siguiente orden:
go get -u github.com/codegangsta/negroniGo facilita las cosas
Si has construido una aplicación web antes, seguramente sabes que hay un buen montón de conceptos a tener en cuenta.
HTTP, HTML, CSS, JSON, bases de datos, sesiones, cookies , formularios, semiwares, enrutamiento y controladores son
sólo algunas de las muchas cosas que tu aplicación web puede necesitar para poder interactuar.
Si bien cada una de esas cosas puede ser importante en la construcción de tus aplicaciones web, no cada una de ellas es
importante para alguna determinada aplicación. Por ejemplo, una API web puede simplemente usar JSON como formato
de serialización, con lo cual conceptos tales como HTML no son relevantes para esa aplicación web en particular.
El camino de Go
La comunidad de Go entiende este dilema. En lugar de confiar en las grandes y pesadas plataformas que tratan de cubrir
todas las bases, los programadores Go apuestan a las necesidades básicas para realizar el trabajo. Este enfoque
minimalista en la programación web puede ser una experiencia desagradable al principio, pero el resultado de este
esfuerzo es un programa mucho más simple al final.
Go hace las cosas simples, es tan fácil como eso. Si nos entrenamos para alinearnos al "camino de Go" en la
programación para la web, vamos a terminar con aplicaciones web más simples, flexibles y fáciles de mantener.
El poder en la simplicidad
A medida que avancemos a través de los ejercicios de este libro, creo que te sorprenderás por lo simple que algunos de
estos programas pueden ser mientras que todavía proporcionan un montón de funcionalidad.
Al sentarte a diseñar tus propias aplicaciones Web en Go, piensa mucho acerca de los componentes y conceptos en que
se centra tu aplicación, y utiliza sólo esas piezas. Este libro cubre una amplia gama de temas de Internet, pero no te
sientas obligado a utilizarlos todos. En palabras de nuestro amigo Lonestar, "sólo toma lo que necesitas para sobrevivir"
El paquete net/http
Probablemente has escuchado que Go es fantástico para crear aplicaciones web de todas las formas y tamaños. Esto se
debe en parte al fantástico esfuerzo que se ha puesto en hacer una biblioteca estándar limpia, consistente y fácil de usar.
Tal vez uno de los paquetes más importantes para cualquier desarrollador web en ciernes Go es el paquete net/http .
Este paquete te permite construir servidores HTTP en Go con sus poderosas construcciones de composición. Antes de
comenzar a codificar, hagamos un muy rápido resumen de HTTP.
Conceptos HTTP básicos
Cuando hablamos de la construcción de aplicaciones web, normalmente queremos decir que estamos construyendo
servidores HTTP. HTTP es un protocolo que originalmente fue diseñado para transportar documentos HTML desde un
servidor hasta un navegador web cliente. Hoy, HTTP se utiliza para el transporte de un mucho más amplio conjunto de
cosas que simplemente HTML.
Lo importante a notar en este diagrama son los dos puntos de interacción entre el servidor y el navegador. El navegador
realiza una petición HTTP con un poco de información, el servidor procesa esa petición y devuelve una respuesta.
Este modelo de petición-respuesta es uno de los puntos focales clave en la construcción de aplicaciones web en Go. De
hecho, la pieza más importante del paquete es la interfaz http.Handler .
La Interfaz http.Handler
A medida que te familiarices más con Go, te darás cuenta de cuanto impactan las interfaces en el diseño de tus
programas. La interfaz net/http encapsula en un método el patrón petición-respuesta:
type Handler interface {
ServeHTTP(ResponseWriter, *Request)
}
Se espera que los implementadores de esta interfaz inspeccionen y procesen datos procedentes del objeto http.Request
y escriban una respuesta en el objeto http.ResponseWriter .
La interfaz http.ResponseWriter tiene esta apariencia:
type ResponseWriter interface {
Header() Header
Write([]byte) (int, error)
WriteHeader(int)
}
Componiendo servicios Web
Debido a que gran parte del paquete net/http está construido de tipos interfaz bien definidos, puedes (y se espera que)
construyas tus aplicaciones web con la composición en mente. Cada implementación de http.Handler se puede
considerar como su propio servidor web.
Puedes encontrar muchos patrones en esa simple pero poderosa suposición. A lo largo de este libro cubriremos algunos
de estos patrones y cómo podemos utilizarlos para resolver problemas del mundo real.
Ejercicio: Un servidor de ficheros en 1 línea
Vamos a resolver un problema del mundo real en 1 línea de código.
La mayoría de las veces la gente sólo tiene que servir archivos estáticos. Tal vez tienes una página HTML estática y sólo
quieres servir un poco de HTML, imágenes y CSS y llamarla un día. Claro, podrías ponerla bajo el servidor Apache o
...