Express中res.send(200)与res.status(200).send('OK')、res.sendStatus(200)是否等效?
Express webhook 状态码返回问题解答
废弃原因说明
Express v4及以上版本中,res.send()直接传入数字的用法已被标记为废弃,v5版本会彻底移除该能力,因此必须改用规范写法设置状态码。
几种写法的效果对比
- 旧废弃写法
res.send(200):底层逻辑是将数字识别为状态码,返回HTTP 200状态,响应体为标准状态文本OK,自动结束响应 res.sendStatus(200):Express官方推出的替代写法,和废弃写法效果完全一致:自动设置200状态码,响应体为标准OK文本,自动结束响应res.status(200).send('OK'):效果和上述两种写法完全等价,属于更灵活的显式写法,你可以自定义send()中的响应体内容,适合需要返回特定响应体的场景
常见误区澄清
仅使用res.status(200)是不可行的:该方法仅设置响应的状态码属性,不会触发响应发送,会导致请求一直挂起直到超时,必须搭配send()/end()等结束响应的方法使用。
推荐替代方案
优先选择 res.sendStatus(200)
这是最贴合原res.send(200)设计意图的写法,代码简洁,符合Express规范,绝大多数webhook场景下直接使用即可,webhook服务端只会校验状态码是否为200,不会校验响应体内容。
特殊场景选择
- 如果要求返回空响应体:使用
res.status(200).end(),不会返回任何响应内容 - 如果要求返回自定义响应内容(比如特定JSON、字符串):使用
res.status(200).send(自定义内容),比如res.status(200).json({code:0})
内容的提问来源于stack exchange,提问作者YulePale
相关产品推荐
相关产品推荐

