应用市场系统V1.0 前后端接口对照表
应用市场系统 前后端接口对照表后端Go接口来源router.go路由定义前端调用来源index.html 各js统一返回格式{code: number, msg: string, data: any}鉴权头Authorization: Bearer {token}权限说明公开无需登录游客可访问LoginAuth登录用户admin / user均可JWTAuth‑admin仅管理员一、认证模块 auth请求方式接口路径权限请求Body返回data前端调用位置业务说明POST/api/v1/auth/register公开{username:,password:,email:}{id,username,email}注册弹窗用户注册用户名user/admin表联合查重密码bcrypt哈希POST/api/v1/auth/login公开{username:,password:}{token,role,id,username}登录弹窗统一登录优先查user再查adminPOST/api/v1/auth/change‑passwordLoginAuth{old_password:,new_password:}无修改密码弹窗修改本人密码修改后token_version1旧令牌全部失效GET/api/v1/auth/profileLoginAuth—{id,username,role,email,bio,upload_restricted,restrict_reason,created_at}账户信息弹窗获取当前登录用户资料普通用户展示上传限制状态与理由PUT/api/v1/auth/profileLoginAuth{email:,bio:}ProfileInfo账户信息弹窗保存修改邮箱、个人简介admin不可编辑POST/api/v1/auth/deregisterLoginAuth(user){confirm_delete_apps:true}无注销确认弹窗用户注销删除账户关联全部应用、申诉记录二、应用市场公开接口游客请求方式接口路径权限请求参数返回data前端调用位置业务说明GET/api/v1/stats公开—{app_count,download_count,visit_count}顶部统计栏站点统计每次调用PV1GET/api/v1/app/list公开querykeyword、tag_id、province、city、uploader_type、uploader_id[]AppWithStatsmarketView市场首页获取上架应用列表仅status1上架GET/api/v1/app/:id/detail公开path:idAppWithStatsopenMarket.js应用详情页应用详情携带下载、评分统计GET/api/v1/app/:id/public‑media公开path:id[]AppMediaopenMarket.js详情六宫格仅返回审核通过媒体详情页截图视频GET/api/v1/app/:id/comments公开path:id{list:[],comments:[],rating_avg,rating_count}openMarket.js详情页评论获取评论列表、平均分POST/api/v1/app/:id/comment公开path:idbody{user_name:,device_id:,rating:1‑5,content:,parent_id:0}Comment详情页发表评论游客/用户均可评论支持跟评GET/api/v1/download/:versionId公开path:versionIdquery:device_id{apk_url:}详情下载记录下载日志返回apk下载地址GET/api/v1/tags公开—[]Tag市场筛选下拉框获取全部审核通过标签三、登录用户接口LoginAuthadmin/user普通用户上传应用、版本、媒体、标签、申诉管理员同样可以调用这组接口| 请求方式 | 接口路径 | 权限 | 请求 | 返回data | 前端调用位置 | 业务说明 ||—|—|—|—|—|—|—|| POST |/api/v1/app/upload| LoginAuth | form‑dataapk文件、name、description、category、tag_id、province、city、update_log、version_name | AppInfo | 上传应用弹窗 | 用户上传新应用默认草稿draft || POST |/api/v1/app/:id/version| LoginAuth | path:idform‑dataapk、update_log、version_name | AppVersion | 更新版本弹窗 | 更新应用版本已审核应用更新版本自动变为pending待审核下架 || PUT |/api/v1/my/apps/:id| LoginAuth | path:idbody{name,description,category,tag_id,province,city}| AppWithStats | 编辑应用弹窗 | 编辑自己应用基础信息 || POST |/api/v1/my/apps/:id/submit‑review| LoginAuth | path:id | AppWithStats | 我的应用列表按钮 | 申请上架状态变为pending待审核 || PUT |/api/v1/my/apps/:id/status| LoginAuth | path:idbody{status:0}| AppWithStats | 我的应用下架按钮 | 用户自主下架应用仅支持status0下架不能直接上架 || GET |/api/v1/my/apps| LoginAuth | querykeyword、category、tag_id、review_status、province、city、page、page_size |{list:[],total,page,page_size,total_pages}| myView我的应用页面 | 当前登录用户自己的应用分页列表 || POST |/api/v1/tags| LoginAuth | body{name:标签名}| Tag | 创建标签弹窗 | 创建标签admin直接approveduser为pending待审核 || POST |/api/v1/upload/image| LoginAuth | form‑dataimage文件 |{url:}| 富文本wangEditor图片上传 | 富文本编辑器图片上传 || POST |/api/v1/upload/video| LoginAuth | form‑datafile视频 |{url:}| 富文本视频上传 | 富文本视频上传 || POST |/api/v1/app/:id/media/image| LoginAuth | path:idform‑data file | AppMedia | 媒体管理弹窗上传图片 | 上传应用截图图片user上传pendingadmin上传approved || POST |/api/v1/app/:id/media/video| LoginAuth | path:idform‑data file | AppMedia | 媒体管理弹窗上传视频 | 上传宣传mp4视频ffmpeg自动抽帧封面 || POST |/api/v1/app/:id/media/:mediaId/set‑main‑icon| LoginAuth | path:id,mediaId | 无 | 媒体管理弹窗 | 设置图片为主图标媒体必须审核通过 || DELETE |/api/v1/app/:id/media/:mediaId| LoginAuth | path:id,mediaId | 无 | 媒体管理弹窗删除 | 删除媒体资源同时删磁盘文件 || GET |/api/v1/app/:id/media| LoginAuth | path:id |[]AppMedia| 媒体管理弹窗 | 获取该应用全部状态媒体含pending/rejected应用拥有者/admin可见 || GET |/api/v1/media/list| LoginAuth | queryapp_id、media_type、media_status、page、page_size |{list:[],total,page,page_size,total_pages}| 全局媒体审核页面 | 媒体分页列表普通用户只能筛选自己应用媒体admin看全部 || POST |/api/v1/appeals| LoginAuth(user) | body{reason:申诉理由}| UploadAppeal | 提交申诉弹窗 | 用户提交上传权限申诉同一个用户不能存在多条pending申诉 || GET |/api/v1/appeals/mine| LoginAuth(user) | — | UploadAppeal|null | 账户信息弹窗 | 查询本人最近一条申诉记录 |四、管理员专属接口 JWTAuth‑admin4‑1 用户/上传者管理请求方式接口路径权限请求参数返回data前端调用位置业务说明GET/api/v1/usersJWTAuth‑adminquerykeyword、role、upload_restrict、page、page_size{list:[UploaderRow],total,page,page_size,total_pages}usersView用户列表页面查询useradmin全部上传者聚合应用数量、总下载量POST/api/v1/users/reset‑passwordJWTAuth‑adminbody{uploader_type:user|admin,uploader_id:1,new_password:xxx}无重置密码弹窗重置任意账号密码token_version1旧令牌失效POST/api/v1/users/:id/restrictJWTAuth‑adminpath:idbody{restrict:true|false,reason:}无用户权限设置弹窗设置普通用户上传权限限制填写限制理由管理员账号不可限制DELETE/api/v1/users/:idJWTAuth‑adminpath:id无用户列表删除按钮删除普通用户级联删除该用户全部应用、申诉记录4‑2 应用审核管理请求方式接口路径权限请求返回data前端调用位置业务说明GET/admin/api/app/listJWTAuth‑adminquery多筛选、page、page_size分页应用列表adminView管理员全部应用旧版管理后台接口保留兼容POST/admin/api/app/uploadJWTAuth‑adminform‑data上传apkAppInfoadmin上传弹窗管理员上传应用PUT/admin/api/app/statusJWTAuth‑adminbody{id:1,status:0|1}无admin后台上下架修改应用上下架上架要求review_statusapprovedDELETE/admin/api/app/deleteJWTAuth‑adminquery id无admin后台删除应用仅下架(status0)的应用允许删除删除应用版本评论下载记录静态文件POST/admin/api/app/force_off_shelfJWTAuth‑adminbody{app_id:1,off_shelf_reason:xxx}无强制下架弹窗管理员强制上架应用下架记录off_shelf_reason下架理由GET/api/v1/admin/review‑queueJWTAuth‑admin—[]AppWithStatsreviewView审核队列页面获取所有待审核review_statuspending应用列表POST/api/v1/admin/apps/:id/approveJWTAuth‑adminpath:idAppWithStats审核队列【通过】按钮审核通过review_statusapprovedstatus1上架POST/api/v1/admin/apps/:id/rejectJWTAuth‑adminpath:idbody{comment:拒绝理由}AppWithStats审核拒绝弹窗审核拒绝review_statusrejectedstatus0下架记录审核意见4‑3 标签管理请求方式接口路径权限请求返回data前端调用位置业务说明GET/api/v1/admin/tagsJWTAuth‑admin—[]TagtagView标签管理页面获取全部标签包含pending/rejectedPOST/api/v1/admin/tags/:id/approveJWTAuth‑adminpath:idTag标签列表审核通过标签审核通过POST/api/v1/admin/tags/:id/rejectJWTAuth‑adminpath:idTag标签列表拒绝标签审核拒绝PUT/api/v1/admin/tags/:idJWTAuth‑adminpath:id body{name:新标签名}Tag重命名标签弹窗重命名标签同步更新引用该标签应用的category字段DELETE/api/v1/admin/tags/:idJWTAuth‑adminpath:id无标签列表删除按钮删除标签清空应用tag_id引用不删除category文本4‑4 申诉审批管理请求方式接口路径权限请求返回data前端调用位置业务说明GET/api/v1/admin/appealsJWTAuth‑admin—[]UploadAppealappealView申诉队列页面获取全部pending待审批申诉POST/api/v1/admin/appeals/:id/approveJWTAuth‑adminpath:idUploadAppeal申诉列表通过按钮申诉审批通过解除用户上传限制POST/api/v1/admin/appeals/:id/rejectJWTAuth‑adminpath:id body{comment:拒绝理由}UploadAppeal申诉拒绝弹窗申诉拒绝维持上传限制4‑5 媒体资源审核全局媒体请求方式接口路径权限请求返回data前端调用位置业务说明POST/api/v1/admin/media/:id/approveJWTAuth‑adminpath:id无全局媒体列表【审核通过】按钮媒体资源审核通过POST/api/v1/admin/media/:id/rejectJWTAuth‑adminpath:id body{reject_msg:驳回理由}无媒体驳回弹窗媒体驳回如果该媒体是主图标自动清除is_main_icon标记五、静态资源接口请求方式路径权限说明GET/static/*filepath公开自定义静态处理器支持HTTP‑Range断点续传apk、图片、视频防路径穿越攻击GET/公开返回index.html单页面六、遗留旧版admin兼容路由/admin/api/*/admin/api/loginPOST 登录接口无需鉴权旧版管理后台登录返回token与/api/v1/auth/login能力重复做向后兼容。补充说明token_version机制修改密码、重置密码user/admin表token_version字段1JWT载荷携带签发时的token_version中间件比对数据库版本号不一致直接401鉴权失败强制重新登录。文件上传全部为multipart/form‑data表单JSON接口使用Content‑Type:application/json。分页统一结构{list:[],total:100,page:1,page_size:10,total_pages:10}业务错误全部返回code:1鉴权失败返回code:401成功返回code:0。

相关新闻

COORD坐标转换器实战指南:从高斯投影到四参数七参数

COORD坐标转换器实战指南:从高斯投影到四参数七参数

简介:这是一款面向GIS工程师、测绘人员及导航开发者的轻量级坐标转换工具,专为解决多源地理数据在WGS84、CGCS2000、北京54、西安80、Pulkovo 1942等主流坐标系间快速互转的刚需。资源包共40个文件,含3个核心可执行程序(COORD.exe…

2026/10/26 10:14:30 阅读更多 →
VCCM600电源模块三种冷却方式与散热设计解析

VCCM600电源模块三种冷却方式与散热设计解析

VCCM600 这个系列刚出来的时候,我第一反应不是看功率密度,也不是看效率曲线,而是它那个“Can be Cooled Three Ways”的slogan。干电源系统集成这行时间久了都明白,一块AC-DC电源模块的散热方案,往往比电气参数更早决定…

2026/10/27 1:37:40 阅读更多 →
模块电源三种冷却方式解析:VCCM600散热设计与降额选型指南

模块电源三种冷却方式解析:VCCM600散热设计与降额选型指南

VoxPower的VCCM600系列刚看到的时候,我的第一反应是:600W级模块电源说"可以用三种方式冷却",这不是什么新鲜事,市面上很多半砖、全砖产品在设计时就考虑了传导、对流、强制风冷几种散热路径,但多数只是"…

2026/10/25 15:56:30 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/25 22:36:10 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/26 4:52:12 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/26 5:00:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/26 3:16:46 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 12:00:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 13:21:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →