عن المشروع

chi هو موجّه خفيف الوزن وأصيل وقابل للتركيب لبناء خدمات Go HTTP، وهو مناسب بشكل خاص لمشاريع REST API الكبيرة التي تحتاج إلى أن تبقى قابلة للصيانة مع نموّها. تشمل مبادئ التصميم الأساسية وضوح بنية المشروع، وقابلية الصيانة، واستخدام معالجات net/http القياسية، وإنتاجية المطوّر، والقدرة على تفكيك الأنظمة المعقّدة إلى أجزاء معيارية أصغر. يتألف الموجّه الأساسي من أقل من 1000 سطر من الشيفرة، وليس له أي تبعيات خارجية تتجاوز مكتبة Go القياسية. وهو مبني على حزمة context في Go (المتاحة منذ Go 1.7) للقيم المرتبطة بالطلب، وإشارات الإلغاء، والمهلات الزمنية عبر سلاسل المعالجات. يدعم التوجيه معاملات URL المسماة (مثل `/users/{userID}`)، ومحارف البدل (`/admin/*`)، ومعاملات التعبيرات النمطية، ومجموعات المسارات، والموجّهات الفرعية، وتكديس الوسائط. يستخدم الموجّه داخلياً شجرة Patricia radix trie. توفّر حزمة وسائط اختيارية شاملة (`github.com/go-chi/chi/v5/middleware`) حقن معرّف الطلب، والتسجيل، والتعافي من حالات panic، ومعالجة المهلة الزمنية، واكتشاف IP العميل، وتحديد معدّل الطلبات، والضغط، والمصادقة الأساسية، وفرض نوع المحتوى، ومنع التخزين المؤقت، وتكامل pprof، والمزيد. كما تتوافق أي وسائط net/http قياسية أيضاً. تشمل الحزم ذات الصلة في منظومة chi كلاً من cors، وdocgen (توثيق المسارات التلقائي)، وjwtauth (مصادقة JWT)، وhostrouter (التوجيه القائم على النطاق)، وhttplog، وhttprate، وhttptracer، وhttpvcr، وstampede (دمج طلبات HTTP). يُستخدم المشروع في بيئات الإنتاج من قبل Pressly، وCloudflare، وHeroku، و99Designs، وغيرهم. أضاف الإصدار v5 دعم مسار وحدة go.mod.