You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter前端调用Express接口时next()失效,报Cannot POST /userdata错误

问题分析与解决方案

核心问题

你遇到的Cannot POST /userdata错误,根源是前端请求的路由路径与后端定义的受保护路由不匹配:

  • 后端受verifyJWT保护的用户数据接口是/data/userdata(通过app.use('/data', DataRouter) + router.post('/userdata', ...)组合而成)
  • 但前端实际请求的是/userdata,这个路径在后端没有对应的路由配置,因此触发404错误。

另外你提到Postman请求/auth/userdata正常,那是因为/auth路由属于未受保护的AuthRouter,和你要调用的受保护/data/userdata是两个完全独立的接口。

修复步骤

  1. 修正前端请求URL
    将Flutter代码中Uri.parse(userdata)的userdata变量值改为后端受保护接口的完整路径,示例:

    // 假设后端基础地址是http://localhost:3000,完整路径应为
    const String userdata = "http://localhost:3000/data/userdata";
    
  2. 确认后端路由逻辑正确性
    当前app.js的路由挂载配置是正确的,确保DataRouter确实关联到/data路径:

    app.use(verifyJWT);
    app.use('/data', DataRouter); // 此配置会生成完整路由:/data/userdata
    
  3. 额外检查项

    • 前端请求的authorization header格式正确(你当前代码中的Bearer $token写法没问题)
    • 确认verifyJWT中间件执行next()后,请求能正常流转到DataRouter的/userdata路由

补充说明

如果你的AuthRouter中也定义了/userdata路由,那是未受保护的测试/备用接口,和受保护的/data/userdata是两个独立接口,不要混淆两者的用途。

内容的提问来源于stack exchange,提问作者AirAmetyst

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:58:09