Go con Gin, el mega tutorial

Hola Nómadas, hoy vamos a iniciar una serie de posts los cuales creemos serán muy interesantes, pues vamos a explicar desde cero como crear una aplicación web en Go y en concreto utilizando el framework Gin.

 


Antes de continuar queremos decir desde Cibernómadas que la serie de posts está inspirada en la fantástica serie de posts de Miguel Grinberg.


Índice de la serie

Este post es parte de una serie de varios post, por lo que a continuación tienes el índice para que no te pierdas y puedas seguir el orden de publicación.

Descripción inicial

La aplicación web que vamos a programar es un sistema de micro-blogging. Lo llamaremos goblog. Todo el código que vamos a ir desarrollando lo iremos publicando en https://github.com/Cibernomadas/goblog.

Para ello, en este post explicaremos como inicializar el proyecto creando la estructura de directorios, instalar el framework que nos ayudará en el desarrollo de la web y crear el “¡Hola Mundo!”.

Desde Cibernómadas asumimos que ya disponéis de Go instalado en vuestro ordenador. Para aquellos que aún no tienen Go instalado pueden dirigirse a la web de Golang y descargar el instalador de Go según el sistema operativo.

Vendoring

Ya os hemos comentado como hacer vendoring para Go. Aún así, os explicamos rápidamente como inicial el proyecto con dep.

Te puede interesar  ¿Qué es un CMS?

Lo primero es ejecutar el comando dep init para que se nos generen los ficheros Gopkg.lock y Gopkg.toml, así como el directorio vendor.

Si utilizamos un sistema de control de versiones recomendamos añadir el directorio vendor en el fichero de excepciones. En Git sería .gitignore. Así evitamos añadir las librerías externas o de terceros a nuestro proyecto.

A partir de este momento hay que ir creando el proyecto y cuando estemos contentos con el trabajo y antes de ejecutar las pruebas tenemos que ejecutar el comando dep ensure, para que se actualicen las dependencias y las versiones en el fichero Gopkg.lock.

Estructura del proyecto

Hay muchas opiniones a cerca de como organizar el proyecto en cuanto a ficheros y directorios.

Desde Cibernómadas os sugerimos que hagáis las cosas simples y por eso mismo os sugerimos la siguiente estructura de directorios.

El directorio cmd contendrá lo que es el punto de entrada o la aplicación principal de la aplicación web.

El directorio webapp será donde tendremos que programar toda la “magia” para que nuestra aplicación web haga lo que pretendemos.

Dentro de webapp tenemos varias capetas, decir que no están todas las que nos harán falta, pero si las principales. Public es la carpeta donde se guardará todo contenido que tenga que ser accesible públicamente, como puede ser código JavaScript, imágenes o CSS, entre otros. La carpeta templates será donde guardaremos las plantillas de nuestra aplicación web y que más tarde utilizaremos para renderizar contenido en el navegador. Por último, la carpeta router contendrá lo que es el código Go de la aplicación web.

Te puede interesar  Telegram bots en golang (II)

¡Hola Mundo!

Creo que ha llegado el momento que todos estábamos esperando. Vamos a empezar con algo básico para que vayamos entendiendo como utilizar la librería Gin y a la vez conocer como funciona una aplicación web.

El ¡Hola Mundo! Con Gin sería algo parecido a esto:

Nosotros con la intención de preparar un poco los siguientes posts, vamos a trabajar un poco más y haremos un ¡Hola Mundo! Algo más elaborado.

En principio vamos a editar dos ficheros, el primero será webapp/router/main.go. En este fichero crearemos tres funciones.

  • NewServer: Esta función nos sirve para generar un nuevo servidor. Será donde configuremos el servidor y sus propiedades.
  • RegisterRoutes: El servidor deberá responder a ciertas direcciones o URI. Éstas serán definidas aquí y además indicaremos qué manejador (o handler, en inglés) procesará la petición y devolverá una respuesta.
  • holaMundo: Es el handler que procesa la petición y responde con información para que sea renderizada en el navegador.

Por ahora están las tres funciones juntas en un fichero, más adelante las dividiremos en varios ficheros.

Aquí podéis ver el código:

El segundo fichero, y último, que vamos a modificar por ahora es cmd/goblog/main.go.

Este fichero tiene muy poco código y por el momento solo vamos a utilizar dos de las funciones definidas en webapp/router/main.go.

Lo primero que haremos será crear una instancia de nuestro servidor utilizando la función NewServer. Ésta nos devolverá un objeto de tipo *gin.Engine. Por otro lado, utilizaremos la función RegisterRoutes para indicarle al servidor qué URI tiene que escuchar y responder junto a los métodos HTTP. Por último, utilizaremos un método del tipo *gin.Engine para poner el servidor en funcionamiento.

Te puede interesar  Puesta en marcha de Odoo en Debian 9 - Parte 1

El código quedaría tal que así:

La primera web

No hay nada como ver que el trabajo realizado se materialice en algo visible. Para probar el código escrito solo tenemos que ejecutar cmd/goblog/main.go.

Hay que recordar el indicarle a dep que estamos usando las versiones adecuadas. Esto lo conseguimos ejecutando dep ensure.

Ahora si, ejecutamos, desde la ruta base del proyecto go run cmd/goblog/main.go y veremos algo parecido a esto:

Tal como se puede apreciar estamos ejecutando nuestro servidor en modo depuración, lo que nos será muy útil mientras estemos desarrollando, ya veremos como cambiar esto más adelante. También vemos que hay una URI, en concreto /, que el servidor la procesa con el handler holaMundo y utilizando el método GET. Esto significa que si navegamos a 127.0.0.1:8000/ o localhost:8000/ veremos el siguiente resultado:

Respuesta del servidor

Y Nómadas, esto es todo por el momento, os iremos actualizando en futuros posts.

Go con Gin, el mega tutorial
Etiquetado en:                 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *