iris中必须使用party机制按业务模块组织路由、复用中间件并隔离路径前缀;通过app.party("/prefix")创建分组,子路由自动拼接前缀,支持嵌套、中间件绑定及子域名隔离。

要在Iris中按业务模块组织路由、复用中间件并隔离路径前缀,必须使用Party机制创建逻辑分组,否则所有路由将平铺在根路径下,无法实现权限控制、子域绑定或中间件局部生效。
基础分组:创建带公共前缀的路由集合
第一步:调用app.Party("/api")生成一个新分组,返回值是另一个Party实例,它继承了Application的大部分方法但路径自动拼接前缀;【路径前缀不会自动加斜杠,请确保传入的字符串以/开头】
第二步:在该分组上调用.Get、.Post等方法注册子路由,例如apiGroup.Get("/users", handler)最终注册的实际路径是/api/users,而非/users。
第三步:直接启动服务,无需额外注册——Party本身不是独立服务实体,只是路由构建的语法糖,所有子路由最终仍由app统一管理。
分组嵌套:多层路径与中间件叠加
方法一:链式调用嵌套Partyv1 := app.Party("/api/v1") → v1.Party("/admin")得到的分组实际路径为/api/v1/admin,中间件可逐层叠加,外层中间件对内层全部生效。
方法二:变量赋值再嵌套admin := app.Party("/admin")<br>dashboard := admin.Party("/dashboard")
此时dashboard.Get("/stats")注册的是/admin/dashboard/stats,注意dashboard不能直接调用app的方法如Run。
这一步容易出错:如果误写成app.Party("admin")(缺开头斜杠),Iris会将其视为相对路径,导致路由匹配失败且无报错提示。
分组绑定中间件:局部拦截与预处理
方法1:构造时传入中间件函数authGroup := app.Party("/user", authMiddleware, logMiddleware)→该分组下所有路由在执行业务处理器前,必先经过这两个中间件,顺序不可逆。
方法2:分组创建后单独调用.Use()payment := app.Party("/pay")<br>payment.Use(rateLimit, validateSignature)→这种方式更灵活,支持运行时动态增删中间件。
方法3:组合使用全局+局部中间件app.Use(globalLogger)<br>admin := app.Party("/admin")<br>admin.Use(adminAuth)<br>admin.Get("/panel", handler)→请求/admin/panel会依次执行globalLogger → adminAuth → handler。
子域名分组:用Subdomain替代Party实现域名级隔离
直接用app.Subdomain("api")创建的分组,其行为与app.Party("api.")等价,但语义更清晰;注册的Get("/", ...)实际响应的是api.yourdomain.com/而非/api/。
本地开发需手动修改hosts文件添加127.0.0.1 api.localhost,否则浏览器无法解析子域名;【未配置hosts时访问api.localhost会直接超时,不是404】
动态子域用app.WildcardSubdomain(),例如userSub := app.WildcardSubdomain(userHandler)可捕获alice.localhost、bob.localhost等任意一级子域请求。











