从 PHP 到 AI + Golang,程序员自救转型手记(三十):实现管理员注销接口、API 请求函数命名规范 这是一个系列 Blog作者将以一个 PHP 全栈工程师的身份利用 AI 工具claude code、codex、deepseek、豆包等从零开始学习 golang 语言并最终完成 ai-go-admingithub | gitee开源项目的制作全程记录分享。在上一期我们进行了 “token 过期清理、获取实例的方法名称规范统一”本期将完成实现管理员注销接口、API 请求函数命名规范实现管理员注销接口在迁移后台布局时我们已经准备好了管理员注销按钮和注销接口请求函数/** * 管理员注销请求 */exportfunctionadminLogout(){returnrequest({url:/admin/logout,method:POST,})}这里我们直接要求 CC实现服务端/admin/logout接口中途 AI 提供了几个选项问我从哪里获取 token提供了比如logoutHandler 内单独从header解析出token认证中间件解析到token后额外注入token字段到请求上下文之前只是认证未记录 token…但我认为我们之前已经注入了一个admin用于存储管理员信息token本来就是属于管理员信息的一部分直接将token合并到admin中即可聚合在一个对象里比两个独立context key更合理。所以认证中间件内将token解析出来后合并放到admin模型中最终注入到上下文中然后注销时获取即可不需要单独注入token。后续又考虑到model.Admin是GORM实体模型映射admins表。token是请求级别的临时数据不属于admin实体把它们绑在一起不合适额外定义一个AdminSession struct作为extractAdmin的新返回值类型。最终代码如下internal\middleware\admin_auth.go// AdminSession 管理员会话信息由认证中间件注入到请求上下文typeAdminSessionstruct{Admin*model.Admin Tokenstring}// GetToken 从上下文中取出当前令牌字符串未登录时返回空funcGetToken(c*gin.Context)string{session,ok:c.Get(CtxAdminKey)if!ok{return}returnsession.(*AdminSession).Token}// 其他略......internal\handler\admin\admin.go// Logout 管理员退出登录func(h*AdminHandler)Logout(c*gin.Context){iferr:h.svc.Logout(c,middleware.GetToken(c));err!nil{response.Fail(c)return}response.Success(c)}// 路由注册此路由要求登录group.POST(/logout,middleware.AdminAuth(),h.Logout)internal\service\admin\admin.go对应服务层调用 token 驱动删除 token 数据// Logout 注销当前管理员令牌func(s*AdminService)Logout(c*gin.Context,tokenStrstring)error{returntoken.Manager().Delete(c.Request.Context(),tokenStr)}意外 bug后续对注销接口进行测试时从数据库内直接删除掉 token 再发起注销结果提示身份认证令牌失效请重新登录这里逻辑不对找到注销方法加了以下几行代码admin:middleware.GetAdmin(c)ifadminnil{// 未登录直接生成成功响应其意图已自然完成// 不能执行任何 token 删除逻辑因为管理员未认证response.Success(c)return}API 请求函数命名规范目前项目虽然没几个API请求函数web/src/api/内的函数但是命名方式比较随意adminLogin、adminLogoutgetCaptchaConfig、checkClickCaptchapostClearCache这里让 AI 帮我们统一一个命名规范豆包建议get和check开头的保持adminLogin这种没有前缀的加上一个do前缀post开头的也改为do前缀。也听取了CC内的GLM-5.2的建议差异在于adminLogin这种没有前缀也保持现状因为我们项目只使用GET和POST两种请求方式非GET自然就是POST兼容 cdn 等云服务大多数 CDN/全站加速 服务对 PUT、DELETE 等兼容性差post开头的则去掉前缀最终我决定让 AI 帮我去掉postClearCache的post前缀adminLogin改为loginadminLogout改为logout都在admin.ts文件以内其实是无需前缀的getCaptchaConfig改为getLoginConfig后续都以类似的方式进行命名get请求函数加前缀普通的post无需前缀。

相关新闻

最新新闻

Unity游戏开发入门指南:从零构建你的第一个3D游戏

Unity游戏开发入门指南:从零构建你的第一个3D游戏

1. 项目概述:为什么选择Unity开启游戏开发之旅?如果你对游戏开发感兴趣,或者已经尝试过一些简单的工具但感觉遇到了瓶颈,那么Unity这个名字你肯定不陌生。它早已不是那个只属于专业工作室的秘密武器,而是成为了全球数百…

2026/7/11 3:15:42
IR2130 自举电容计算实战:基于栅极电荷与开关频率的 3 步选型法

IR2130 自举电容计算实战:基于栅极电荷与开关频率的 3 步选型法

IR2130 自举电容计算实战:基于栅极电荷与开关频率的3步选型法在电机驱动和逆变器设计中,IR2130作为经典的栅极驱动芯片,其自举电路设计直接关系到系统可靠性。许多工程师在实际应用中常因自举电容选型不当导致驱动电压不足、系统异常关断等问…

2026/7/11 3:15:42
qwen3.6-plus:面向工程闭环的编程模型范式迁移

qwen3.6-plus:面向工程闭环的编程模型范式迁移

1. 这不是又一个“发布即过期”的模型新闻,而是开发者工作流正在被悄悄重写“阿里发布国产最强编程模型qwen3.6-plus”——这句话在技术社区刷屏那天,我正蹲在客户现场调试一个遗留Java系统里嵌套三层的MyBatis动态SQL。手机弹出推送时,下意识…

2026/7/11 3:15:42
TTS 架构的六代演进(二):第 1-2 代 · 拼接合成与 HMM-TTS

TTS 架构的六代演进(二):第 1-2 代 · 拼接合成与 HMM-TTS

本篇是「TTS 架构的六代演进」系列第 2 篇。TTS 的前两代跨度大约 20 年(1990-2010),主线是"生成"的粒度和方式从取真人录音直接拼演进到用统计模型采样参数。这两代都还是前神经网络时代——一代把音色物化成几十 GB 的录音库,另一代把音色压成几十 MB 的概率参数模…

2026/7/11 3:15:42
红海竞争决策模型:食品品牌进入赛道的第一步判断

红海竞争决策模型:食品品牌进入赛道的第一步判断

如果把一个食品品牌看成一个经营系统,红海竞争就是系统里的关键判断变量。它决定前端需求如何被识别,中端价值如何被表达,后端渠道和销售如何承接。 红海竞争这类问题,没有放之四海而皆准的标准答案,但一定有更稳的判断…

2026/7/11 3:15:42
AD7490与PIC18F4680嵌入式信号采集系统设计指南

AD7490与PIC18F4680嵌入式信号采集系统设计指南

1. AD7490与PIC18F4680的硬件选型解析在嵌入式信号采集系统中,ADC芯片和微控制器的选型直接决定了系统的性能上限。AD7490作为ADI公司推出的16位逐次逼近型(SAR)ADC,具有以下核心特性:分辨率与采样率:16位分辨率下最高1MSPS采样率…

2026/7/11 3:10:41

月新闻