news 2026/10/2 15:28:12

基于VUE的物流兼职系统:从业务闭环到技术实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于VUE的物流兼职系统:从业务闭环到技术实现

1. 项目概述:物流兼职系统的核心价值与业务逻辑

每年毕业季,我都习惯在校友群里看一眼大家在忙什么。发现一个很普遍的现象:十个人里至少有六七个在问“计算机毕业设计选什么题目能过”。我的回答一直很统一——不要选那些看着炫、实际空的东西,要选业务闭环完整的题目。基于VUE的物流兼职系统,就是这类题目里性价比相当高的一种。

先把这个项目说透。物流行业这两年有个特别明显的用工痛点:波峰波谷太剧烈。双十一、618、临近节假日这些时间节点,快递分拣、仓库理货、站点配送的用人需求会突然翻倍,企业如果按峰值招全职人员,人力成本根本压不住;不提前备人,订单一到就爆仓。以前很多网点靠微信群喊人、靠中介临时拉人,效率低不说,人来了干没干、干多久、该结多少钱,全凭一张嘴,扯皮的事特别多。

物流兼职系统解决的就是这个问题:企业端发布兼职岗位,说明工作时间、地点、薪资标准、需求人数;求职端按条件浏览岗位、提交申请、审核通过后按时到岗打卡;管理员在后台监控平台整体运行、管理用户和举报。整个业务形成一个从“发单—接单—审核—签到—结算”的完整闭环。

项目里核心角色就三类:管理员、企业用户(物流公司或网点)、兼职求职者。对应的权限边界、操作流程和数据归属都相对清晰,这正好是毕业设计最需要的东西——评审老师第一眼看的是你的系统有没有把业务讲透,而不是堆了多少个页面。我能看到很多同学做兼职类系统,最后做成“一个岗位表+一个用户表”就交代了,状态流转没有、权限控制没有、结算逻辑没有,这其实是把最有含金量的部分放弃了。

这个题适合谁参考?一类是毕业设计还没定题、想找一个“不算难但完整度足够高”项目的同学;另一类是已经选定了兼职平台、灵活用工、劳务对接这类命题,但不知道怎么落地细节的人。这篇文章会把技术选型、数据库设计、前端实现、常见坑、论文撰写和答辩准备整个链路讲清楚,可以直接当作做项目的参考手册。

2. 技术选型拆解:VUE前端与后端方案怎么搭配

2.1 VUE版本选择:Vue 3还是Vue 2

这是第一个需要拍板的问题。现在做新项目,我的建议是直接用Vue 3,配Element Plus。Vue 3的Composition API把逻辑复用做得更清爽,一个页面里用户信息、岗位列表、报名状态这些代码能按功能聚合,而不是把所有逻辑都堆在data和methods里。而且Vue 3现在是Vue面试题里肯定绕不开的内容,做完毕业设计顺便把Vue 3的响应式原理、setup语法、组合式函数这些点掌握住,对找工作也有实际帮助。

但如果你手头的参考资料、老师给定的模板、或者网上找到的现成源码是基于Vue 2 + Element UI的,也不用硬迁。Vue 2的生命周期和数据响应机制在本科毕业设计这个层面完全够用,而且Element UI组件成熟,遇到问题搜索答案一堆,调试成本低。我的看法是:过渡期项目选Vue 2求稳,新起项目选Vue 3求新,两个都做得出来。

版本选定之后,还有一个细节容易忽略:Element Plus与Vue 3的版本兼容问题。Element Plus要求Vue 3.2以上,如果你用Vite初始化项目,直接装最新稳定版就好;如果你后来要把项目集成到Spring Boot里用jar包跑,Vite的base路径和路由的history模式一定要提前想好,不然后端一启动页面空白。

2.2 后端框架与数据库选型

后端我优先推荐Spring Boot,原因很现实:国内计算机专业的课程体系里Java是主力语言,Spring Boot上手快、生态大,问题好查,答辩时老师也认可。配合MyBatis-Plus操作数据库,比原生JDBC少写一大堆样板代码,分页查询、条件构造器、逻辑删除这些毕业设计高频功能都是现成的。

数据库选MySQL 5.7或8.0均可。需要注意MySQL 8.0默认的时区问题和认证插件变化,连接串里建议显式写上serverTimezone=Asia/Shanghai,避免服务器和本地时间显示差8小时的诡异问题。这个问题我在第5节会详细讲。

可能有同学问:用Node.js或Python Flask行不行?当然行。但我的经验是,物流兼职系统里的权限控制、状态机流转、统计报表这些逻辑,在后端用强类型语言写起来更不容易出低级错误。而且Spring Boot + Vue是国内毕业设计源码市场里最主流的一套组合,你遇到问题去搜索,命中率最高。既然目的是顺利毕业,选主流方案就是选确定性。

2.3 核心数据库表设计

表设计是整个系统的地基,我强烈建议先把表结构理清楚再动手写代码。这个项目的核心表我列一个可以直接用的版本:

表名核心字段作用
userid, username, password, phone, role, status, avatar用户基础信息,role区分管理员/企业/求职者
company_infoid, user_id, company_name, contact, contact_phone, credit_code企业扩展信息,一对一对应用户表
job_positionid, company_id, title, description, salary_type, salary_amount, work_start_time, work_end_time, location, headcount, enrolled_count, status兼职岗位表,核心业务表
job_applicationid, job_id, user_id, apply_time, status, remark申请记录台账
attendanceid, application_id, check_in_time, check_out_time, work_date, status签到签退记录
settlementid, application_id, job_id, user_id, amount, settle_status, settle_time薪资结算记录

这里特别提一下job_position表的status字段。它不能只存一个“上架/下架”状态,建议设计成可扩展的整数枚举,比如0草稿、1招聘中、2已招满、3已结束。因为岗位生命周期里的操作逻辑不一样:招聘中可以报名和审核,已招满就不能再报名,已结束才能进入结算环节。这个状态机设计是答辩时的高频加分点。

另外,job_application的status建议设计为:0待审核、1已通过、2已拒绝、3已取消、4已完成。报名表状态多了,签到和结算环节才有的写。很多同学把“通过”和“完成”混成一个字段,最后薪资结算的触发条件就写不清楚。

3. 系统核心模块拆解与实现思路

3.1 用户登录与三种角色的权限设计

登录认证我推荐用JWT而不是传统的Session,原因有三点:一是前后端分离项目里JWT是主流方案,答辩时能讲清楚;二是Vue端的路由守卫配合token判断登录态非常自然;三是不用考虑Session共享的问题,Spring Boot单机部署直接搞定。

具体实现思路不复杂:用户提交用户名密码,后端校验通过后生成一个token,把userId和role放进去,返回给前端。前端存在localStorage里,每次请求通过axios拦截器把token塞进请求头。后端写一个拦截器或过滤器,对非放行接口做token校验。

前端这边,我建议做三套路由空间:管理员路由(/admin开头)、企业端路由(/company开头)、求职端路由(/user开头),配合路由动态添加或路由守卫做权限过滤。用Vue Router的beforeEach钩子判断当前用户角色和要访问的路由是否匹配,不匹配就跳转到对应首页并提示无权限。这样比在每个页面里手动判断权限要省心得多。

3.2 兼职岗位发布与多条件检索

岗位发布是企业端的核心操作。表单里要包含岗位标题、工作地点、工作时段、薪资类型(按小时/按件/按天)、薪资金额、需求人数、岗位描述。前端用el-form做校验,后端再校验一次。这里有个坑:前端校验是用户体验,后端校验才是安全底线,千万别只在前端做。

岗位检索是整个系统里最体现用户体验的部分。求职端首页一般是岗位列表加筛选条件,筛选项建议包含:薪资类型、工作日期、工作地点、关键词搜索。实现上可以用MyBatis-Plus的QueryWrapper动态拼接条件,也可以用SQL写一个动态查询,看个人习惯。

前端列表页最好用el-table加分页组件,后端返回统一分页结构:{ records, total, current, size }。分页千万不要做成前端把全量数据都拿下来再切,数据量一大就会卡,而且评审会追问你怎么解决大量岗位数据下的查询性能,分页是基本功。

3.3 报名审核与状态流转

报名审核这个模块,是物流兼职系统区别于“普通信息发布网站”的关键。它里面有一套状态机逻辑:

求职者提交申请后,记录初始状态为待审核;企业端在申请管理列表里看到待审核记录,可以点击通过或拒绝。通过后,这个岗位的已报名人数要加1,同时判断是否达到需求人数,达到就自动把岗位状态置为已招满。这里最忌讳的是只在界面上改状态,底层数据不同步,最后统计全对不上。

代码实现上,推荐把状态流转写在Service层,并且加上状态校验:只有在当前状态允许跳转时才操作,比如“待审核”才能变为“通过”,“已招满”的岗位不能再接受新报名。用Java的枚举来定义状态,配合一个私有方法校验前置状态,逻辑清晰,答辩也容易讲。

3.4 签到考勤与薪资结算

签到模块是跟物流场景强绑定的特色功能。求职者被审核通过后,在岗位规定的工作日期当天可以签入,工作结束再签退。后端记录两个时间点,同时可以加一个地理位置字段(经纬度)做辅助校验——有这个设计,系统就从“单纯的信息平台”升维成“有管理能力的工具平台”。

薪资结算建议作为独立的定时任务或企业端手动触发功能。结算金额根据薪资类型计算:按天的就是固定金额,按小时的就是时薪乘以当天工作时长(用签到签退时间差计算),按件的可能需要额外录入完成件数。我见过不少毕业设计把结算做成“审核通过就直接发钱”的一锤子买卖,缺乏说服力。正确做法是:已完成的报名记录,核对签到记录后生成结算单,状态为待结算,企业确认后置为已结算。每一步都有数据依据,文档也写得满。

3.5 数据统计与可视化看板

后台管理员的首页建议做一个统计看板,展示平台核心指标:用户总数、岗位总数、报名总数、已完成订单数、累计结算金额。可以用ECharts画几个图表:近七天的报名趋势、岗位类型分布饼图、各地域岗位数量柱状图。ECharts在Vue里通过vue-echarts封装组件使用,很成熟。

这个模块的加分项是“用数据讲故事”。不要只放数字,建议配合趋势图说明平台的活跃度变化,比如临近双十一报名量明显上升,这能证明系统有实际业务意义。答辩时这块是最容易打开话匣子的地方。

4. VUE前端开发实操:从工程初始化到打包部署

4.1 项目初始化与目录结构

Vue 3项目推荐用Vite初始化:

npm create vite@latest logistics-front -- --template vue cd logistics-front npm install npm install vue-router@4 pinia axios element-plus

初始化后我把src目录按模块规划,养成习惯对后期维护帮助很大:

src/ api/ # 所有接口请求模块,按业务域拆分 router/ # 路由配置文件 views/ # 页面组件,按角色分目录 components/ # 可复用组件 store/ # Pinia状态管理 utils/ # 工具函数(请求封装、日期格式化等) assets/ # 静态资源

views目录建议和路由一一对应,比如views/admin/、views/company/、views/jobseeker/,这样后端的接口分组和前端页面结构能形成映射关系,找代码和写文档都方便。

4.2 路由配置与登录守卫

路由配置有几个关键点。第一,登录页和注册页放公共路由,其他页面都挂meta字段:requiresAuth: true,同时标注allowedRoles数组。第二,全局前置守卫里做两种拦截:没有token且页面需要登录,直接重定向到/login;有token但角色不在allowedRoles里,重定向到对应角色的默认首页。

router.beforeEach((to, from, next) => { const token = localStorage.getItem('token') const userInfo = JSON.parse(localStorage.getItem('userInfo') || 'null') if (to.meta.requiresAuth && !token) { next('/login') } else if (token && userInfo && to.meta.allowedRoles && !to.meta.allowedRoles.includes(userInfo.role)) { next('/403') } else { next() } })

看到没,核心逻辑就这么几行。但很多同学栽在刷新页面上:Vuex里的用户状态刷新后没了,导致守卫判断出错。解决办法很土但有效——用户信息也存localStorage,刷新后重新读取恢复。这个是前端最典型的坑之一。

4.3 Axios封装与统一异常处理

axios一定要封装,别在业务组件里到处写axios.get。我在utils/request.js里做统一封装:

const service = axios.create({ baseURL: '/api', timeout: 10000 }) service.interceptors.request.use(config => { const token = localStorage.getItem('token') if (token) config.headers.Authorization = `Bearer ${token}` return config }) service.interceptors.response.use( response => { const res = response.data if (res.code !== 200) { ElMessage.error(res.msg || '请求失败') return Promise.reject(new Error(res.msg)) } return res }, error => { if (error.response && error.response.status === 401) { ElMessage.error('登录已过期,请重新登录') localStorage.clear() router.push('/login') } else { ElMessage.error('网络异常,请稍后重试') } return Promise.reject(error) } )

这样封装的好处是:前端每个接口只需要关心业务数据,状态码判断、错误提示、token注入都在统一层处理。答辩时问“你对HTTP异常是怎么处理的”,这一段能直接讲。

4.4 状态管理与用户信息存储

Vue 3用Pinia管理全局状态。这个项目里需要全局共享的状态不多:用户信息、登录状态、系统配置。我在store/user.js里定义userInfo的state,登录成功时setUserInfo写入state和localStorage,logout时清空两者。

需要注意的是,如果用了Pinia又依赖localStorage,写setter时一定要双写。只写state刷新丢,只写localStorage页面内不能响应式更新。很多同学出现“登录成功后页面不跳转”或者“退出后还能看到个人信息”的怪问题,十有八九是这两个地方没同步。

4.5 组件复用与插槽使用

物流兼职系统的岗位卡片、状态标签、通用筛选表单这类组件复用频度很高。以状态标签为例,我封装了一个StatusTag组件,用map把状态码映射到文字和颜色:

<template> <el-tag :type="typeMap[status]">{{ textMap[status] }}</el-tag> </template>

如果碰到“显示内容比较复杂,需要调用方自己塞模板”的场景,就用插槽。比如岗位卡片底部操作区,企业在岗位列表里看到的是“编辑、下架”,求职者看到的是“报名、取消报名”,卡片组件主体结构相同、底部操作不同,最合理的方案就是暴露一个名为actions的插槽,由父组件决定渲染什么按钮。

4.6 打包部署:与后端整合的两种方案

“vue打包要怎么放进springboot里”,这是几乎每个用这套技术栈的同学都会遇到的问题。两种方案,根据场景选:

第一种,开发环境用Vite代理解决跨域,生产环境把前端构建产物交给Nginx托管,后端单独跑在8080端口,Nginx配置反向代理把/api转发到后端。这也是前后端分离的标准部署方式,我推荐。实际操作时,构建前把路由切成history模式需要后端配合做fallback,Nginx里加一句try_files $uri $uri/ /index.html;。

第二种,为了省事,把前端dist目录下的静态文件复制到Spring Boot的src/main/resources/static目录,后端jar包直接一起发布。用这种方式要注意前端接口baseURL不能带跨域逻辑,直接用相对路径/api即可;路由history模式在这种方式下刷新会404,要么改hash模式,要么在后端加一个WebMvcConfigurer的视图控制器做转发。图省事的同学直接改hash模式最省心。

5. 常见问题排查与避坑实录

5.1 跨域请求失败,请求能通但拿不到数据

这是前后端分离项目里出现频率第一的问题。现象是浏览器控制台报CORS错误,或者Network里看到请求标红。解决思路分开发和生产:开发环境推荐用Vite的proxy配置,在vite.config.js里加server.proxy,把/api转发到http://localhost:8080,这样前端页面里请求都是同源的,浏览器不拦截。

生产环境如果是Nginx托管,同样在Nginx配置location /api做一个proxy_pass。如果图省事把前端丢进Spring Boot,基本就不涉及跨域了,因为静态资源和接口同源。还有种临时方案是后端加@CrossOrigin注解配CorsFilter,但我不建议一上来就这么干,治标不治本,万一以后要拆服务又得改。

5.2 登录后页面一刷新就跳回登录页

这个问题我在4.2节提到了根源:Vuex/Pinia状态没持久化。登录成功后只把token存了localStorage,但用户信息只在内存里,刷新后内存清空,路由守卫判断“无用户信息”就踢回登录页。解决办法是用户信息同时存localStorage,守卫里从localStorage恢复对象。千万别用JSON.stringify直接塞字符串就完事,读取时要包try/catch,防止数据损坏导致整个页面白屏。

另一个关联问题是Token过期。后端返回401,axios拦截器统一清除本地缓存并跳转登录页。有些同学只在具体页面的接口回调里处理,结果就是页面卡在半个登录态上,体验很差,答辩演示时当场翻车。

5.3 时间查出来比本地少8小时

Java的LocalDateTime序列化到前端,经常因为时区配置不对导致差8小时。要么是MySQL连接串没加serverTimezone=Asia/Shanghai,要么是Jackson序列化器没配置时区。排查方式很直接:先把后端接口返回的JSON打印出来,看时间字段是不是带T的ISO格式;再用Postman直接调接口对比。前端的处理办法是写一个date工具类,统一格式化显示,例如dayjs可以这样用:dayjs(value).format('YYYY-MM-DD HH:mm:ss')。

给个实用建议:数据库里所有时间字段都用datetime类型,Java实体用LocalDateTime,JSON返回时统一格式化为yyyy-MM-dd HH:mm:ss字符串。这一套搞统一了,后面统计报表和签到时间差计算都省事。

5.4 前端字段和后端字段对不上,列表全是空数据

现象最常见的是:后端返回的字段名是createTime,前端el-table的prop写成了create_time;或者相反。Java后端默认驼峰命名,MySQL字段用下划线,MyBatis-Plus配置mapUnderscoreToCamelCase为true后一般能自动映射。但如果你写原生SQL查询返回DTO,字段映射就要手工对齐了。

排查方法也很简单:打开浏览器Network,看接口返回的JSON字段名,再对着前端表格的prop慢慢核对。强烈建议在前端api层建立统一的字段映射对象,边界清晰,换后端接口也不怕。

5.5 常见问题速查表

问题可能原因解决方案
页面白屏,控制台报错路由模式与部署环境不匹配history模式需后端/Nginx配置fallback,或改用hash模式
请求接口404baseURL与后端ContextPath不匹配统一约定/api前缀,检查Spring Boot context-path
刷新403用户信息在内存中丢失用户信息持久化到localStorage并做异常保护
上传图片不显示静态资源映射未配置Spring Boot配置资源映射目录,或前端拼完整访问路径
分页数据错乱current和size命名不一致统一后端返回结构,前端分页组件对应绑定
部署后接口正常但页面空白静态资源路径用了绝对路径/Vite base配置设为相对路径'./'或在部署环境统一
薪资算出来是负数签退时间在签入之前未校验后端签退接口校验时间先后,前端联动禁用按钮

6. 从源码到LW文档:毕业设计落地与答辩准备

6.1 LW文档该怎么写

LW文档(即论文/设计文档)是毕业设计的另一半命脉。代码再漂亮,文档写得意识流一样,成绩照样上不去。我的写作顺序建议是从外到内、从业务到技术:先写绪论里的背景和研究意义,再写需求分析和用例图,接着画系统架构和数据库ER图,最后才是实现和测试。前面几章写得越稳,实现部分就越有依据。

论文里UML图是重点加分项。至少要有:系统用例图(三种角色各自的用例)、总体架构图(前端Vue、后端Spring Boot、MySQL三层的交互关系)、核心业务时序图(从发单到结算的完整流程)、数据库ER图。图不要用Visio画得特别花哨,越接近标准UML越好。答辩时老师浏览论文的速度很快,图是他们的第一落点。

系统测试章节别只写“系统运行正常”一句话。至少列出登录模块、岗位管理模块、报名审核、签到结算的测试用例表格,写明测试步骤、预期结果、实际结果。能补充一个并发场景更好,比如多个用户同时报名同一岗位时enrolled_count不能超出headcount——哪怕你只是用乐观锁或锁机制简单处理了,写上都是亮点。

6.2 答辩现场的高频问题清单

答辩时老师通常不看你满屏的代码,而是边看演示边问业务逻辑和技术选型。我整理一个高频问题清单,你可以提前对着自查:

  • 系统分了几种角色?各自的权限边界是什么?
  • 报名状态的流转是怎样的?哪些操作会改变哪些状态?
  • 为什么选Vue做前端?它相比传统的JSP+Servlet有什么优势?
  • Token过期了前端怎么处理?刷新登录态的策略是什么?
  • 分页是怎么做的?数据量大了怎么办?有没有用缓存?
  • 岗位的“已招满”和“已结束”状态分别由谁触发?
  • 薪资结算的金额是怎么算出来的?遇到工时计算争议怎么办?

这些问题都不是死知识,只要你真的把代码完整从头写过一遍,基本都能答上。怕的是找人代做或者从网上直接down源码改个名字,演示时老师随口问一句“你报名通过后数据库哪个表哪个字段变了”就直接卡壳。

6.3 答辩演示时的几个小技巧

演示系统时一定要用真实数据提前录好。所谓“真实”,就是岗位要有完整的上下架状态、报名记录要有不同阶段(待审核、已通过、已完成)、结算单要有已结算和待结算两种状态。这样你演示时点开每个页面都有内容可讲,而不是现场临时造数据,造得非常假。

还要准备好一个“亮点话术”:比如你在签到模块加了经纬度校验,就可以这样说——“这个功能的设计动机是防止代打卡。平台根据工作岗位填写的地址生成一个半径范围,签到时如果定位超出范围就给出异常提示,后台可以做人工复核。”这种一句话就能讲清楚业务价值的细节,比背一百行代码都管用。

关于LW文档的排版格式,不同学校要求差别很大。开题报告、任务书、毕业论文正文、答辩PPT,格式规范一定先问导师要模板,不要自己觉得美观就自创一套。我这几年见过太多论文因为目录格式、图表编号、参考文献引用这些小问题被打回修改,真的不值当。

最后说点实际的:做这类系统,时间分配上我强烈建议“100%源码、60%论文字数、200%调试预算”。源码阶段看起来时间占比大,但真正磨人的是那些你看不见的问题——时区差了、字段映射错了、部署后路由404了,这些看似小问题每个都能耗掉半天。提前把第5节里的排查清单过一遍,能帮你少熬不少夜。物流兼职系统最难的不是技术,而是把每条业务线的状态流转想明白。想明白了,代码只是把流程翻译成实现而已。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 15:28:11

铼:从周期表边缘到航空发动机核心的稀有金属

如果你问一个材料工程师&#xff0c;元素周期表上哪一种金属最“低调但不可替代”&#xff0c;我大概率会回答&#xff1a;75号元素铼&#xff0c;符号Re。它的熔点接近3200℃&#xff0c;在纯金属里仅次于钨&#xff1b;它在地壳里的平均丰度只有十亿分之零点几&#xff0c;比…

作者头像 李华
网站建设 2026/10/2 15:26:33

从零实现Softmax回归与MLP:手写反向传播,打通推荐系统模型基础

写推荐系统学习笔记已经到第十篇&#xff0c;这周我把《动手学深度学习》里的Softmax回归和MLP感知机放在一起&#xff0c;从零实现了一遍。很多朋友学推荐系统&#xff0c;上来就看DeepFM、DCN、MMoE&#xff0c;结果卡在多层神经网络上。其实你只要先把Softmax回归和MLP从零实…

作者头像 李华
网站建设 2026/10/2 15:26:14

VSG虚拟同步发电机控制原理与光伏并网Matlab仿真建模详解

光伏并网这块&#xff0c;早期大家做仿真基本都绕不开 PQ 控制和 droop 控制。PQ 控制简单粗暴&#xff0c;有功无功解耦&#xff0c;并网稳定&#xff0c;但说白了它就是个“跟屁虫”&#xff0c;电网电压稍微晃一下&#xff0c;逆变器就懵了&#xff0c;既没有惯量也不参与调…

作者头像 李华
网站建设 2026/10/2 15:23:42

阿里开源open-code-review:基于LLM的自动化代码审查工具实战

1. 这个项目到底在解决什么问题第一次在GitHub热榜上刷到alibaba/open-code-review的时候&#xff0c;我正被团队里堆积如山的PR压得喘不过气。我们组一共六个人&#xff0c;每天要处理十几个合并请求&#xff0c;光靠人工逐行看diff&#xff0c;眼睛都快看瞎了&#xff0c;还经…

作者头像 李华
网站建设 2026/10/2 15:22:09

Apifox接口自动化:RSA加密登录与Token鉴权全流程实战

做接口自动化测试这么多年&#xff0c;我一直觉得登录态处理是整套用例里最绕不开又最容易被忽略的一环。尤其后端把登录密码做了 RSA 加密、登录成功返回 token、后续每个接口都要在 header 里带 token 这种链路&#xff0c;听起来不复杂&#xff0c;但真正在 Apifox 里落地时…

作者头像 李华