Guía de Crear una API con Go Fiber de 0
Tags: go, tutorial, webdev, beginners
Published: 2021-01-30 16:15:48

# ¿Porque escoger Go para crear una API?
[Go](https://golang.org/doc/) es un lenguaje pensado para la web por **Google** y se caracteriza por:
* **lenguaje rápido**: por ser compilado y tener poca locación de memoria.
* **Fuertemente tipado**: facilitando la creación de código limpio y fácil de leer.
* **Eficiente para crear servidores y aplicaciones web**: Es un leguaje pensado para la web preparado con multi-hilo y asincronismo.

Por lo que es perfecto para crear API rápidamente y con un buen rendimiento.
## ¿Que es [Fiber](https://gofiber.io/) y porque debería usarlo?
> Fiber es un framework web inspirado en [Express](https://github.com/expressjs/express) construido sobre [Fasthttp](https://github.com/valyala/fasthttp), el motor HTTP más rápido para [Go](https://golang.org/doc/). Diseñado para facilitar las cosas para un desarrollo rápido con cero asignación de memoria y rendimiento en mente.

Existen varios Frameworks de Go, pero entre todos [Fiber](https://gofiber.io/) es mi favorito, bastante sencillo de usar y con gran rendimiento, sirve tanto para un proyecto pequeño como para uno grande. **Es ideal para comenzar con [Go](https://golang.org/doc/)**, tiene una buena documentación, y en caso de necesitar ayuda tiene un **servidor de [Discord](https://gofiber.io/discord) muy activo** (En ingles 😎).

### ¿Bien, Como empiezo? 
Primero que nada necesitas Go para trabajar con Go (🤪) así que hay que descargarlo en la [pagina oficial de Go](https://golang.org/dl/), descargan la version mas nueva de Go, una vez instalado ejecutan este comando:
```bash
> go version
go version go1.15.6 windows/amd64
```
¡Genial! ¡Ya tenemos Go instalado!

¡Ahora necesitamos crear nuestro gran proyecto! Vamos a usar **“Go Modules”** para crear un proyecto en cualquier carpeta, ejecutamos este comando:
```bash
> go mod init asombrosoProyecto
go: creating new go.mod: module asombrosoProyecto
```
creara un nuevo proyecto en la carpeta con el nombre **asombrosoProyecto**, puedes cambiarlo por lo que quieras, y sera **la ruta base de nuestro proyecto**. Además notaras el archivo `go.mod` el cual fue creado y nos dice el **nombre del proyecto**, **la version de Go** y **las dependencias que tenemos**, que de momento no tenemos ninguna.
¿Que necesitamos para crear una API con Fiber? Pues Fiber ¿no? 🤣
Para instalar un ejecutamos el comando `go get` seguido del nombre del paquete, para instalar fiber ejecutamos:
```bash
> go get github.com/gofiber/fiber/v2
go: downloading github.com/gofiber/fiber/v2 v2.3.3
```
Esto **agregara fiber como dependencia** a nuestro go.mod , en este punto debería verse así:
```go
module asombrosoProyecto

go 1.15

require github.com/gofiber/fiber/v2 v2.3.3
```
Tambien habrá creado un go.sum el cual se encargará de gestionar nuestras versiones e indicar el hash de integridad de cada una de ellas, **permitiendo trabajar con las dependencias**.

¡Listo! ¡Ya tenemos todo lo necesario para empezar a escribir código! 🤩

## Escribir el código de nuestra API
Creamos un archivo `main.go` y abrimos nuestro editor de código de preferencia, agregamos `log` y fiber a nuestro programa:
```go
package main

import (
    "log"

    "github.com/gofiber/fiber/v2"
)
```
esto importara `log` y fiber para ser usado en nuestro código, en nuestra función `main` agregamos este código:
```go
func main() {
    //Crear nuestra aplicación de Fiber
    app := fiber.New()
    /*Esto creara una petición GET en la ruta base
    Regresara un simple string 
    Primero se agrega un string que sera el path de la ruta 
    y luego se agrega la funcion handler, el cual tiene
    siempre esa forma*/
    app.Get("/", func(c *fiber.Ctx) error {
        return c.SendString("Hello, World 👋!")
    })
    /*Se ejecuta el servidor y en caso de fallar mostrara
    log.Fatal con el error*/
    log.Fatal(app.Listen(":3000"))
}
```
Ahora para ejecutar el servidor, ejecutamos `go run main.go` pero primero, **para evitar errores con las dependencias**, ejecutamos:
```bash
go mod tidy
```
Esto para garantizar que los módulos de los que depende tu proyecto **no cambien inesperadamente**, ya sea por razones maliciosas, accidentales o de otro tipo.

Ahora si, ejecuta:
```bash
go run main.go
```
Y deberían ver algo como esto:
![fiber_console](https://dev-to-uploads.s3.amazonaws.com/i/6d3qw5b1sj9o5tfp7254.png)

¡Felicidades! **¡Tienes tu primera API con Go Fiber!** visita `localhost:3000` en tu navegador y deberías ver:
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/sx2074b89vbptij4bdaj.png)

Para seguir aprendiendo te recomiendo que mires:
* [Fiber Recipes](https://github.com/gofiber/recipes): Un conjunto de ejemplos creados con fiber, diferentes bases de datos, tecnologías o testing.
* [Fiber Docs](https://docs.gofiber.io/): La documentación tiene todo lo que necesitas para crear una aplicación, pequeña o grande.

Pero sobre todo, no dejes de aprender y exprimentar. Nunca pares de aprender.
En un futuro Post cubriré como crear un CRUD e integrarlo con PostgreSQL 😘 Gracias por leer.

{% post https://dev.to/marlosrodriguez/guia-api-crud-con-go-y-postgresql-10gf %}