¿Qué es Fiber?

Fiber es un framework de Go, que permite crear servidores HTTP de forma sencilla y rapida.

Esta inspirado en el framework Express de Nodejs, por lo que si ya lo conoces, este framework te será muy fácil aprenderlo

Creación del Proyecto

Puedes usar los siguientes comandos para crear tu primer proyecto con Fiber:

Primero abre una consola o terminal de tu sistema, crea una carpeta:

mkdir hello-fiber

Ubica la consola dentro de la carpeta:

cd hello-fiber

Luego inicializa un modulo de Go:

go mod init github.com/fazttech/hello-fiber

En mi caso he usado mi direccion de github, pero puedes colocar tu nickname y el nombre que quieras para tu proyecto

Creacion de Proyecto Fiber

package main

import (
    "github.com/gofiber/fiber/v2"
)

func main() {
    app := fiber.New()
    app.Listen(":3000")
}

Hola Mundo

Podemos escribir rutas a partir de funciones como Get:

    app.Get("/", func(c *fiber.Ctx) error {
        return c.SendString("Hello, World!")
    })

Rutas Separadas

type User struct {
    FirstName string
    LastName  string
}

func handleUser(c *fiber.Ctx) error {
    user := User{
        FirstName: "John",
        LastName:  "Doe",
    }
    return c.Status(fiber.StatusOK).JSON(user)
}

func main() {
    app := fiber.New()

    app.Get("/user", handleUser)

    app.Listen(":3000")
}

Post Request

func handleCreateUser(c *fiber.Ctx) error { user := User{}
    if err := c.BodyParser(&user); err != nil {
        return err
    }
    user.Id = uuid.NewString()
    return c.Status(fiber.StatusOK).JSON(user)
}

func main() {
    app := fiber.New()

    app.Post("/users", handleCreateUser)

    app.Listen(":3000")
}

Agrupar Rutas

    usersGroup := app.Group("/users")
    usersGroup.Get("", handleUser)
    usersGroup.Post("", handleCreateUser)

Middlwares, Funciones Intermedias

func main() {
    app := fiber.New()

    // Middlewares
    app.Use(logger.New())
    app.Use(requestid.New())

    app.Get("/", func(c *fiber.Ctx) error {
        return c.SendString("Hello, World!")
    })

    usersGroup := app.Group("/users")
    usersGroup.Get("", handleUser)
    usersGroup.Post("", handleCreateUser)

    app.Listen(":3000")
}