chi para Go: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es chi y para qué sirve?

\n\n

chi es un enrutador HTTP ligero, de alto rendimiento e idiomático para el lenguaje de programación Go. Está creado para el desarrollo de aplicaciones web y API, proporcionando a los desarrolladores una herramienta potente y flexible para el enrutamiento de solicitudes HTTP.

\n\n

A diferencia del paquete estándar net/http, chi ofrece:

\n
    \n
  • Compatibilidad con net/http: chi implementa completamente la interfaz http.Handler, lo que permite una fácil integración con código Go existente y middleware.
  • \n
  • Enrutamiento contextual: chi utiliza context.Context para pasar parámetros de ruta (por ejemplo, ID de usuario) entre middleware y manejadores.
  • \n
  • Rutas anidadas (Subrouters): Permite agrupar rutas en bloques lógicos (por ejemplo, /api/v1/users).
  • \n
  • Agrupación de middleware: Se puede aplicar middleware tanto a todo el enrutador como a grupos de rutas individuales.
  • \n
  • Soporte integrado para CORS, registro, compresión y otras tareas comunes.
  • \n
\n\n

chi es ideal para crear API REST, microservicios y cualquier aplicación web que requiera una arquitectura limpia, eficiente y fácilmente testeable.

\n\n

Instalación de chi

\n\n

Para instalar chi, use el gestor de paquetes estándar de Go. Asegúrese de tener Go instalado (versión 1.14 o superior).

\n\n
go get -u github.com/go-chi/chi/v5
\n\n

Después de ejecutar este comando, la biblioteca se agregará a su archivo go.mod. Si usa Go Modules (recomendado), la importación se verá así:

\n\n
import "github.com/go-chi/chi/v5"
\n\n

También se suele instalar el paquete de middleware:

\n\n
go get -u github.com/go-chi/cors\ngo get -u github.com/go-chi/chi/v5/middleware
\n\n

Inicio rápido con ejemplo de código

\n\n

Vamos a crear un servidor HTTP simple que responda a solicitudes GET.

\n\n
package main\n\nimport (\n    "fmt"\n    "net/http"\n\n    "github.com/go-chi/chi/v5"\n)\n\nfunc main() {\n    r := chi.NewRouter()\n\n    // Definimos la ruta\n    r.Get("/hello", func(w http.ResponseWriter, r *http.Request) {\n        fmt.Fprintf(w, "¡Hola, chi!")\n    })\n\n    // Iniciamos el servidor\n    http.ListenAndServe(":3000", r)\n}
\n\n

Ejecute este código y abra el navegador en http://localhost:3000/hello. Verá el mensaje "¡Hola, chi!".

\n\n

Métodos y funciones principales de chi

\n\n

Veamos los métodos clave de la biblioteca chi. Todos los ejemplos asumen que ya ha creado un enrutador r := chi.NewRouter().

\n\n

1. Get(pattern string, handlerFn http.HandlerFunc)

\n

Qué hace: Registra un manejador para el método HTTP GET en la ruta especificada.

\n

Parámetros:

\n
    \n
  • pattern — cadena de ruta (por ejemplo, /users, /users/{id}).
  • \n
  • handlerFn — función manejadora que coincide con la firma http.HandlerFunc.
  • \n
\n

Ejemplo:

\n
r.Get("/", func(w http.ResponseWriter, r *http.Request) {\n    w.Write([]byte("Página principal"))\n})
\n\n

2. Post(pattern string, handlerFn http.HandlerFunc)

\n

Qué hace: Registra un manejador para el método HTTP POST.

\n

Parámetros: Similar a Get.

\n

Ejemplo:

\n
r.Post("/users", func(w http.ResponseWriter, r *http.Request) {\n    // Lógica de creación de usuario\n    w.WriteHeader(http.StatusCreated)\n    w.Write([]byte("Usuario creado"))\n})
\n\n

3. Put(pattern string, handlerFn http.HandlerFunc)

\n

Qué hace:

Recommendations