¿Qué es chi y para qué sirve?
\n\nchi 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\nA diferencia del paquete estándar net/http, chi ofrece:
- \n
- Compatibilidad con
net/http: chi implementa completamente la interfazhttp.Handler, lo que permite una fácil integración con código Go existente y middleware. \n - Enrutamiento contextual: chi utiliza
context.Contextpara 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
chi es ideal para crear API REST, microservicios y cualquier aplicación web que requiera una arquitectura limpia, eficiente y fácilmente testeable.
\n\nInstalación de chi
\n\nPara instalar chi, use el gestor de paquetes estándar de Go. Asegúrese de tener Go instalado (versión 1.14 o superior).
\n\ngo get -u github.com/go-chi/chi/v5\n\nDespué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í:
import "github.com/go-chi/chi/v5"\n\nTambién se suele instalar el paquete de middleware:
\n\ngo get -u github.com/go-chi/cors\ngo get -u github.com/go-chi/chi/v5/middleware\n\nInicio rápido con ejemplo de código
\n\nVamos a crear un servidor HTTP simple que responda a solicitudes GET.
\n\npackage 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\nEjecute este código y abra el navegador en http://localhost:3000/hello. Verá el mensaje "¡Hola, chi!".
Métodos y funciones principales de chi
\n\nVeamos los métodos clave de la biblioteca chi. Todos los ejemplos asumen que ya ha creado un enrutador r := chi.NewRouter().
1. Get(pattern string, handlerFn http.HandlerFunc)
\nQué hace: Registra un manejador para el método HTTP GET en la ruta especificada.
\nParámetros:
\n- \n
pattern— cadena de ruta (por ejemplo,/users,/users/{id}). \n handlerFn— función manejadora que coincide con la firmahttp.HandlerFunc. \n
Ejemplo:
\nr.Get("/", func(w http.ResponseWriter, r *http.Request) {\n w.Write([]byte("Página principal"))\n})\n\n2. Post(pattern string, handlerFn http.HandlerFunc)
\nQué hace: Registra un manejador para el método HTTP POST.
\nParámetros: Similar a Get.
Ejemplo:
\nr.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\n3. Put(pattern string, handlerFn http.HandlerFunc)
\nQué hace:
También en la biblioteca
pybind11 para C++: guía completa con ejemplos prácticos
Internacionalización (i18n) en Rust: bibliotecas gettext-rs y fluent-rs
Generación de informes PDF en JavaScript (Node.js): Resumen de bibliotecas y ejemplos de código