Express JS中能否限制路径参数仅接受两个指定值?
实现路径参数的取值限制
可以在URL路由定义里实现这个限制,不过你之前的写法语法有误——Express路由参数的正则匹配要用括号()包裹正则规则,而不是大括号{}。
正确的正则匹配写法
直接在路由参数后用括号指定允许的取值正则:
router.get('/api/platform/:type(windows|android)', async (req, res) => { // 处理逻辑 console.log('匹配到的类型:', req.params.type); res.send(`当前平台类型:${req.params.type}`); });
这个写法会让路由仅匹配/api/platform/windows或/api/platform/android,其他如/api/platform/ios这类请求会直接返回404。
更直观的拆分路由写法
如果觉得正则不够直观,也可以直接拆分两个路由指向同一个处理函数:
const handlePlatformRequest = async (req, res) => { // 通用处理逻辑 const type = req.path.split('/').pop(); res.send(`当前平台类型:${type}`); }; router.get('/api/platform/windows', handlePlatformRequest); router.get('/api/platform/android', handlePlatformRequest);
这种方式可读性更强,后续要新增平台类型时直接加新路由即可。
内容的提问来源于stack exchange,提问作者TheStranger
相关产品推荐
相关产品推荐

