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

GCP API Gateway PUT/DELETE请求404错误 无法传递路径参数至Cloud Functions

问题修复方案

问题根源

404错误由两个配置错误共同导致:

  1. API Gateway路径转发逻辑不匹配
  2. Express路由参数语法错误

具体修复步骤

第一步:修正API Gateway配置的路径转发规则

你当前使用的path_translation: APPEND_PATH_TO_ADDRESS会把API Gateway的完整请求路径直接追加到Cloud Functions地址后面。当你访问API网关的PUT /users/1时,实际转发到Cloud Functions的路径是/cpd_user/users/1,而你的函数只监听/{user_id}路径,自然返回404。

两种修正方案二选一即可:

方案A:修改path_translation策略(更简单)

把/users/{user_id}下PUT/DELETE配置里的path_translation改为CONSTANT_ADDRESS,同时把后端地址带上路径参数占位符:

x-google-backend:
  address: https://asia-southeast2-project-id.cloudfunctions.net/cpd_user/{user_id}
  path_translation: CONSTANT_ADDRESS

方案B:保留APPEND_PATH_TO_ADDRESS,调整Express路由前缀

如果你想保留路径追加策略,就把Express的路由前缀加上/users,适配转发过来的路径。


第二步:修正Express路由的参数语法

Express的路径参数是用冒号:开头,不是大括号包裹,你现在的写法匹配不到任何带参数的请求:
把原来的:

app.delete('/{user_id}', _utils.jwtFilter, UserController.deleteUserAction);
app.put('/{user_id}', _utils.jwtFilter, UserController.updateUserAction);

修改为:

app.delete('/:user_id', _utils.jwtFilter, UserController.deleteUserAction);
app.put('/:user_id', _utils.jwtFilter, UserController.updateUserAction);

如果选了上面的方案B,就改成:

app.delete('/users/:user_id', _utils.jwtFilter, UserController.deleteUserAction);
app.put('/users/:user_id', _utils.jwtFilter, UserController.updateUserAction);

第三步:重新部署验证

修改完配置后,重新部署API Gateway和Cloud Functions,再调用网关地址即可正常匹配路由。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:54:07