应用市场系统V1.0 前后端接口对照表

应用市场系统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。