API Rest con Golang y Echo
Compartir

En este artículo, veremos que es Golang y sus características, También se hará un tutorial de como crear una API Rest con el framework Echo revisando sus características que tiene disponibles.

Que es Golang
Go es un lenguaje de programación de código abierto creado Google en el 2009. Hizo su primer lanzamiento estable, 2011.
Inicio de primeras ideas en el 2007 Es un lenguaje concurrente y compilado. Tiene una sintaxis muy similar a C, compartiendo algunas características de Python
Tiene características dinámicas.
- Es un lenguaje concurrente y compilado.
- Lenguaje estrictamente tipado
- Goroutines
- No tiene excepciones, pero si tiene una forma de controlarlo
- No tiene Clases pero sí se puede programar orientado a objetos.
- Go no tiene herencia, pero si se puede hacer composición.
- Las cadenas en Go están codificadas en UTF-8 por defecto.
Propósito
Robert Griesemer, Rob Pike y Ken Thompson crearon este lenguaje con el objetivo de ayudar al programador, habilitando herramientas, automatizar tareas mundanas como el formateo de códigos y eliminar obstáculos para trabajar en bases de código grandes con un manejo simple de concurrencia y con una gestión de código basada en Paquetes.
Lenguaje Orientado a Objetos
Muchos programadores y foros mencionan que GO es un lenguaje estructurado pero que aun así tiene características que le permiten hacer una programación orientada a objetos.
Por lo que dice desde Golang.org, Es “Si y No”, tiene estructuras, métodos y punteros que le permiten hacer estas funciones de POO
Si y no. Aunque Go tiene tipos y métodos y permite un estilo de programación orientado a objetos, no existe una jerarquía de tipos. El concepto de "interfaz" en Go proporciona un enfoque diferente que creemos que es fácil de usar y, en algunos aspectos, más general. También hay formas de incrustar tipos en otros tipos para proporcionar algo análogo, pero no idéntico, a las subclases. Además, los métodos en Go son más generales que en C ++ o Java: se pueden definir para cualquier tipo de datos, incluso los tipos integrados, como enteros simples, "sin caja". No están restringidos a estructuras (clases).
Además, la falta de una jerarquía de tipos hace que los "objetos" en Go se sientan mucho más livianos que en lenguajes como C ++ o Java.
Veamos un ejemplo de lo recién mencionado, donde en la estructura "hombre" por medio de la función "respirar()" declarada en la interfaz "humano" se relacionan uno con el otro, lo mismo pasa con la estructura "perro"
package main
import "fmt"
type SerVivo interface {
estaVivo() bool
}
type humano interface {
respirar()
pensar()
comer()
sexo() string
}
type animal interface {
respirar()
comer()
EsCarnivoro() bool
}
type vegetal interface {
Clasificacion() string
}
type hombre struct {
edad int
altura float32
peso float32
respirando bool
pensando bool
comiendo bool
esHombre bool
vivo bool
}
type mujer struct {
hombre
// Con solo el nombre se esta heredando todo lo del objeto hombre
}
func (h *hombre) estaVivo() { h.vivo = true }
func (h *hombre) respirar() { h.respirando = true }
func (h *hombre) comer() { h.comiendo = true }
func (h *hombre) pensar() { h.pensando = true }
func (h *hombre) sexo() string {
if h.esHombre == true {
return "Hombre"
} else {
return "Mujer"
}
}
func HumanosRespirando(hu humano) {
hu.respirar()
fmt.Printf("Soy un %s, y ya estoy respirando \n", hu.sexo())
}
/*------------*/
type perro struct {
respirando bool
comiendo bool
carnivoro bool
vivo bool
}
func (p *perro) estaVivo() { p.vivo = true }
func (p *perro) respirar() { p.respirando = true }
func (p *perro) comer() { p.comiendo = true }
func (p *perro) EsCarnivoro() bool { return p.carnivoro }
func AnimalesRespirar(an animal) {
an.respirar()
fmt.Println("Soy un animal y estoy respirando")
}
func AnimalesCarnivoro(an animal) int {
if an.EsCarnivoro() == true {
return 1
}
return 0
}
/* */
func estoyVivo(v SerVivo) bool {
return v.estaVivo()
}
func main() {
totalCarnivoros := 0
Dogo := new(perro)
Dogo.carnivoro = true
Dogo.vivo = true
AnimalesRespirar(Dogo)
totalCarnivoros = +AnimalesCarnivoro(Dogo)
fmt.Printf("Total de carnivoros %d \n", totalCarnivoros)
//fmt.Printf("Estoy vivo =%d \n", totalCarnivoros)
Pedro := new(hombre)
Pedro.esHombre = true
Pedro.vivo = true
HumanosRespirando(Pedro)
Maria := new(mujer)
Maria.vivo = true
HumanosRespirando(Maria)
}
Luego al crear la función "HumanosRespirando" la cual recibe una interfaz de tipo "humano", al ser usada en el "main" podrá recibir una estructura de tipo "perro" o "hombre" mostrando los valores de esta estructura.
ECHO API REST
Es un Framework para crear API Rest utilizando el lenguaje Go, este utilizada Middleware la cual por medio de una función encadenada en el ciclo de solicitud-respuesta de HTTP con acceso al Echo#Context que utiliza para realizar una acción específica, por ejemplo, registrar cada solicitud o limitar el número de solicitudes.


Para instalar echo se debe ejecutar la siguiente linea de comando una vez instalado Go.
Luego de esto para poder crear nuestra API REST con echo con un ejemplo.
package main
import (
"github.com/labstack/echo"
"net/http"
)
type Persona struct {
FristName string `json:"first_name"`
LastName string `json:"last_name"`
Age int `json:"age"`
}
func main() {
e := echo.New()
e.GET("/api", func(c echo.Context) error {
return c.String(http.StatusOK, "hola Mundo")
})
e.GET("/json", func(c echo.Context) error {
p := Persona{
FristName: "Alexiys",
LastName: "Lazada",
Age: 38,
}
return c.JSON(http.StatusOK, p)
})
e.Start(":8080")
}
En el ejemplo anterior, se define el nuevo objeto "echo.New()" luego se define un método GET con una ruta "/api" y una función que recibe un dato de tipo "echo.Context" y retorna un objeto de tipo String con un "hola mundo"
Este Framework también tiene la opción de devolver otros tipos de datos, como en el ejemplo anterior donde se devuelve un JSON mediante el método GET con la ruta "/json".
Para lograr ejecutar esto solo debemos tener instalado Go y en nuestra consola de comando de nuestro sistema operativo solo debemos ejecutar lo siguiente:
$ go run main.go
luego en nuestra consola aparecerá lo siguiente.

luego en nuestro postman podremos consumir nuestra API


Para generar un archivo compilado de nuestra aplicación solo se debe ejecutar el siguiente comando.
$ go build main.go
Esto generar un archivo compilado dependiendo del sistema operativo en el que estemos, en este caso se utilizo windows 10, obteniendo un archivo ejecutable ".exe".

Este archivo levantara nuestra API Rest.
Referencias.









https://nordicapis.com/7-frameworks-to-build-a-rest-api-in-go/

Gracias por darte el tiempo de leer este Articulo y llegar hasta aquí