Об этом проекте
chi — это легковесный, идиоматичный и композируемый роутер для создания HTTP-сервисов на Go, особенно подходящий для крупных проектов REST API, которые должны оставаться поддерживаемыми по мере роста.
Ключевые принципы дизайна включают ясность структуры проекта, поддерживаемость, использование стандартных обработчиков net/http, продуктивность разработчика и возможность декомпозиции сложных систем на меньшие модульные части.
Ядро роутера занимает менее 1000 строк кода и не имеет внешних зависимостей помимо стандартной библиотеки Go. Он построен на пакете context языка Go (доступен с Go 1.7) для значений, привязанных к запросу, сигнализации об отмене и таймаутов в цепочках обработчиков.
Маршрутизация поддерживает именованные URL-параметры (например, `/users/{userID}`), подстановочные знаки (`/admin/*`), параметры регулярных выражений, группы маршрутов, подроутеры и стекирование middleware. Внутри роутер использует радиксное дерево (Patricia trie).
Комплексный опциональный пакет middleware (`github.com/go-chi/chi/v5/middleware`) обеспечивает внедрение request ID, логирование, восстановление после паник, обработку таймаутов, определение IP клиента, ограничение скорости, сжатие, базовую аутентификацию, принудительное указание content-type, предотвращение кэширования, интеграцию с pprof и многое другое. Любой стандартный middleware net/http также совместим.
Связанные пакеты в экосистеме chi включают cors, docgen (автоматическая документация маршрутов), jwtauth (аутентификация JWT), hostrouter (маршрутизация по домену), httplog, httprate, httptracer, httpvcr и stampede (объединение HTTP-запросов).
Проект используется в продакшене компаниями Pressly, Cloudflare, Heroku, 99Designs и другими. В v5 добавлена поддержка пути модуля go.mod.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.