iris框架控制器方法命名规则要求:必须使用指针接收者,方法名以大写http动词(get/post/put/patch/delete)开头,禁止下划线、小写首字母及非法符号;手动绑定路由时命名自由但需符合处理器签名。

Iris框架控制器方法命名规则是什么
在Iris Web框架中定义控制器时,方法名直接影响路由注册、中间件绑定和依赖注入的识别逻辑;若命名不符合约定,会导致方法无法被自动扫描、参数注入失败或HTTP状态码误设。
控制器结构前提
必须将控制器定义为结构体类型,并以指针接收者方式声明方法;Iris不支持非指针接收者的方法自动注册为HTTP处理器。
例如:【func (c *UserController) GetByID(ctx iris.Context)】 合法;而 func (c UserController) GetByID(ctx iris.Context) 将被忽略。
HTTP动词前缀命名法
这是Iris官方推荐且最稳定的方式:方法名以标准HTTP动词大写开头,后接语义化操作描述。
方法一:GET请求 → 方法名以 Get 开头
GetUser → 自动映射到 GET /user(需配合 app.Controller("/user", new(UserController)))
GetUsersByRole → 映射到 GET /user/role,前提是路由中已定义 :role 参数并启用参数提取
方法二:POST请求 → 方法名以 Post 开头
PostLogin → 对应 POST /login;若方法签名含 *iris.Request 或绑定结构体,Iris会自动解析JSON/form-data
方法三:PUT/PATCH/DELETE → 分别用 Put、Patch、Delete 开头
DeleteAvatar → 路由需显式注册为 DELETE /user/avatar,否则不会触发;注意:Iris不会自动推断动词,必须靠方法名+显式路由绑定协同生效
自定义路由绑定时的方法命名自由度
当不使用自动控制器扫描,而是手动调用 app.Get("/api/v1/users", c.GetUser) 时,方法名可任意命名,但必须满足:参数列表首位为 iris.Context,且返回值符合Iris处理器规范(无返回值,或返回 error)。
例如:func (c *UserController) FetchAll(ctx iris.Context) { ... } 可正常绑定到 GET 路由,但此时它不再属于“控制器方法命名规则”约束范围,仅是普通函数引用。
【关键限制】 若该方法同时被用于依赖注入(如通过 c.RegisterDependency(...) 注入服务),则方法名仍建议保留动词前缀,否则团队协作时易误解其HTTP语义。
禁止使用的命名模式
避免使用下划线分隔:Get_User、post_login —— Iris的反射扫描器会跳过含下划线的方法。
禁止首字母小写:getUser、deleteToken —— Go语言规定非导出方法无法被外部包反射访问,Iris控制器扫描完全失效。
不要用纯数字或特殊符号开头:2024GetReport、$adminHook —— 编译报错,Go语法不允许。











