iris 中 party 是原生路由分组机制,非插件;通过 app.party("/prefix") 创建,支持嵌套、中间件绑定及路径参数校验,但参数约束须在具体路由中声明,不可置于 party 前缀内。

iris.Party 是路由分组的核心入口
在 Iris 中,Party 就是分组路由的唯一官方方式,不是插件、不是扩展,而是框架原生支持的一等公民。它返回一个 Party 类型对象,该对象具备和 Application 几乎一致的路由注册方法(Get、Post、Use 等),但所有路径都会自动拼接前缀。
常见错误现象:app.Group 或 app.Router.Group —— 这些写法根本不存在,Iris 没有 Group 方法;也别套用 Gin 或 Echo 的习惯。
-
app.Party("/api/v1"):最简分组,只加前缀 -
app.Party("/admin").Use(AuthMiddleware, Logger):带中间件的分组,中间件作用于组内所有子路由 -
admin := app.Party("/admin"); users := admin.Party("/users"):嵌套分组,最终路径为/admin/users
路径参数约束必须写在 Party 内部路由定义里
Iris 的路径参数类型校验(如 {id:int min(1)})不支持在 Party 创建时统一声明,只能逐条写在具体 Get/Post 路由中。这点和 FastAPI 的 APIRouter(prefix=...) 或 Slim 的闭包分组逻辑不同——Iris 的前缀和参数约束是两个独立层级。
典型误用:app.Party("/users/{id:int}") → 这样写会导致整个分组路径被当成静态字符串,{id:int} 不会被解析为参数,后续子路由也无法再使用 id。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 正确写法:
users := app.Party("/users"); users.Get("/{id:int min(1)}", handler) - 参数类型支持:
string(默认)、int、long、bool、letter、file、path - 验证器可叠加,如
{id:int min(1) max(999)},失败时自动返回 404
中间件绑定位置决定作用域范围
在 Iris 中,Use 调用的位置直接决定中间件生效范围:调用在 Party 上,就只影响该分组;调用在 Application 上,就全局生效。没有“分组级中间件开关”这种抽象层,全靠调用链顺序控制。
容易踩的坑:把认证中间件 Use(Auth) 放在 app.Use(...) 全局调用里,结果连 /health 和 /metrics 都被拦截了。
- 推荐结构:
api := app.Party("/api"); api.Use(JWTAuth); api.Get("/me", meHandler) - 静态资源或公开接口应走独立
Party,例如public := app.Party("/public"); public.Use(NoAuth); public.Get("/status", statusHandler) - 注意中间件执行顺序:先注册的先执行,
Party.Use(a).Use(b)表示 a → b → handler
模块化设计的关键不在分组本身,而在 Context 复用与错误处理收敛
单纯用 Party 切分路径前缀只是表象。真正支撑模块化 API 的,是 Iris 的 Context 对象设计和错误处理器机制。每个 Party 可以设置自己的 ErrorCodeHandlers,比如让 API 分组统一返回 JSON 错误,而管理后台分组返回 HTML 页面。
实际项目中常被忽略的点:不同模块的请求上下文(如用户身份、租户 ID、请求 ID)如果都塞进全局 context.WithValue,后期调试和中间件复用会非常混乱。
- 做法:在 API 分组中间件里,用
ctx.Values().Set("tenant_id", tid),再通过封装的GetTenantID(ctx iris.Context)提取 - 避免:在
app.Use里做通用日志中间件时,直接读取未校验的ctx.Values().GetString("user_id"),可能 panic - 错误处理建议:为每个
Party单独注册app.OnErrorCode(401, handler),而不是依赖全局 fallback
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










