Postman调用serverless offline POST接口持续挂起无响应问题
问题场景
Node.js环境运行serverless offline服务时,Postman发起的POST端点请求会持续挂起,始终不会进入对应handler逻辑,即使不传递任何请求体问题依旧。同配置的GET接口可以正常访问,甚至请求不存在的POST路由也会无限等待,而GET请求无效路由时会正常返回Serverless-offline: route not found.错误。
复现代码
handlers.js
module.exports.postHandler = async (event, context, callback) => { console.log("Inside POST Method"); }
serverless.yml
postHandler: handler: src/handlers.postHandler events: - http: method: post path: v1/post/handler
故障原因
两个问题共同导致这个现象:
- 你定义的是
async类型的handler,但既没有返回标准API Gateway格式的响应,也没有调用传入的callback返回结果,Serverless Offline会一直等待handler执行完成返回响应,直接导致请求挂起。 - 低版本serverless-offline存在POST请求解析bug:当POST请求没有携带
Content-Type请求头时,请求体解析逻辑会卡住,既不会匹配已注册的路由,也不会抛出路由不存在的错误,这就是为什么无效POST路由也会一直挂起。
GET请求不受影响是因为GET请求默认没有请求体,不需要经过请求体解析流程,且低版本对GET请求有默认的响应兜底逻辑,即使handler没返回内容也不会永久挂起。
修复步骤
- 修正handler逻辑,async风格的handler直接返回响应即可,不要混用callback:
module.exports.postHandler = async (event, context) => { console.log("Inside POST Method"); return { statusCode: 200, headers: { "Content-Type": "application/json" }, body: JSON.stringify({ msg: "ok" }) }; }
注意:async handler不要同时使用callback参数,二者混用会导致响应逻辑判断异常,出现非预期的挂起问题
- Postman发POST请求时,在Headers中添加
Content-Type: application/json头,避免触发旧版本的请求体解析bug。 - 如果无效POST路由依然挂起,直接升级serverless-offline到最新稳定版即可修复该解析bug,执行命令:
npm i serverless-offline@latest -D
内容的提问来源于stack exchange,提问作者Zephyr
相关产品推荐
相关产品推荐

