联调说明.md 5.2 KB

前后端联调说明

一、启动

后端(Java) —— 端口 18080(8080 被本机占用)

cd F:\shop\java-rewrite\yoshop-java
mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=18080"
  • yoshop.auth.mode=redis(默认,见 application.yml):真实登录校验,登录态存 Redis
  • --yoshop.auth.mode=off:临时跳过登录校验(本地调试前端时用)
  • Redis 连接复用 spring.data.redis,key 前缀 yoshop:store:token:,TTL 7 天
  • 注意:本机环境变量 SERVER__PORT 会覆盖配置端口,启动时务必显式带 --server.port=18080

前端(Vue) —— 端口 8120

cd F:\shop\yoshop2.0-store
NODE_OPTIONS=--openssl-legacy-provider ./node_modules/.bin/vue-cli-service serve

Windows cmd 下用 yarn serve 亦可(package.json 已带 --openssl-legacy-provider)。

访问 http://localhost:8120 ,用后台账号登录。

二、改了哪些配置

文件 改动 原因
public/config.js BASE_API → /api/store 改走 devServer 代理,避免跨域;原线上地址保留为注释
vue.config.js devServer.proxy 增加 /api → http://localhost:18080 代理把 /api/store/goods/list 转发成 /store/goods/list

两个文件均留有 .bak 备份,要切回线上 PHP 直接 cp public/config.js.bak public/config.js。

请求走向

浏览器 http://localhost:8120/store/goods/list
  → axios baseURL=/api/store,拼成 /api/store/goods/list
  → webpack devServer 代理,去掉 /api
  → http://localhost:18080/store/goods/list

三、本轮为联调补齐的接口

接口 说明 与线上 PHP 对比
POST /store/passport/login 账号密码登录,bcrypt 校验(PHP password_verify 对应 Java BCrypt.checkpw),写 7 天登录态 参数/错误文案一致
POST /store/passport/logout 删除登录态 —
GET /store/store.user/info 登录后第一个请求,返回 userInfo + roles 0 差异
GET /store/home/data 后台首页统计(概览/统计/待办/7 日走势) 0 差异

已有:/store/goods/list(0 差异)、/store/goods/detail(0 差异)。

第 2 批(商城信息、分类、文件库、地区、会员、订单、设置、内容、营销等 34 个接口)已完成, 逐字段校验 28/28 PASS,详见 接口实现进度-第2批.md。

第 3 批(权限-角色/管理员、商城地址、页面装修、帮助中心、文章分类、文章,共 21 个接口,含增删改) 已完成,页面装修 2/2 PASS、写接口 62 项断言全通过,详见 接口实现进度-第3批.md。

第 4 批(商品新增/编辑含多规格、上下架、删除、基础信息、按 ID 取列表、规格列表、图片/视频上传, 共 9 个接口)已完成:写接口 42 项断言全通过,读接口 7/7 逐字段 0 差异,详见 接口实现进度-第4批.md。 进度:151 个接口已实现 91 个。

四、验证过的链路

[1] 无 token 访问商品列表        → 401 请先登录后再访问
[2] 错误密码登录                → 500 登录失败, 用户名或密码错误
[3] 不存在的用户                → 500 登录失败, 该用户不存在或已删除
[4] 有效 token + 商品列表        → 200,8 条商品
[5] 有效 token + 用户信息        → 200,字段与 PHP 逐一对齐
[6] 有效 token + 首页数据        → 200,字段与 PHP 逐一对齐
[7] 经 8120 代理访问以上三个接口 → 全部 200,链路通

五、已知限制

  1. 已覆盖后台主要列表页与常见增删改(商品/分类/订单/会员/营销/内容/设置/权限/文件库,含角色、管理员、商城地址、页面装修、帮助、文章分类、文章、商品保存与上下架、图片视频上传)。 仍缺:订单事件(改价/备注/改地址/取消/发货/退款)、支付设置、配送/运费模板/打印机增删改、优惠券与充值套餐增删改、会员等级增删改、商品评论、客户端设置、统计接口。 未实现的路由现在会明确返回「接口未实现:/store/xxx/yyy」,不再是无信息的 500。
  2. checkPrivilege 未实现。Java 端只校验登录态,不校验角色对具体 API 的权限(PHP 会查 store_api 表)。上线前必须补。
  3. 登录态不跨端。Java 登录写的缓存文件在 java-rewrite/runtime/cache,PHP 生产环境的缓存文件在云服务器 47.121.25.205,两边互不相通。双跑期如需共用登录,要共享目录。
  4. 前端 localStorage 里的 token 只认当前后端。从线上 PHP 切到 Java 时必须重新登录一次,否则带旧 token 一律 401。
  5. ⚠️ 本地库与线上库不是强一致。实测:PHP 写入的数据本地能读到,但 Java 写入的数据线上 PHP 读不到(新建商品后 PHP 报「商品信息不存在」)。 说明 192.168.1.177/shop 与线上 PHP 库之间是 PHP → 本地的单向同步。 影响:写接口只能用「库内断言 + Java 读回」验证;上线前必须把 application.yml 的数据源指向线上主库,否则后台改的数据在线上不生效。