原生Node.js如何分离GET请求URL的路径与查询参数
原生Node.js提取URL纯路径实现方案
目标:从URL http://www.localhost:8080/api/numbers/prime?amount=13 中无第三方依赖提取纯路径部分 api/numbers/prime。
直接使用Node.js内置的URL解析能力即可实现,不需要安装任何外部包。
推荐写法(支持Node.js 10.0及以上版本)
当前所有维护期内的Node.js版本都全局支持WHATWG标准的URL构造函数,无需引入额外模块,代码如下:
const inputUrl = 'http://www.localhost:8080/api/numbers/prime?amount=13'; // 解析URL const urlObj = new URL(inputUrl); // 取出路径部分,移除开头的斜杠即为目标结果 const purePath = urlObj.pathname.slice(1); console.log(purePath) // 输出 api/numbers/prime
这里用
slice(1)比正则替换性能更好,效果完全一致,因为标准URL解析返回的pathname一定是以/开头的。
低版本Node.js兼容写法
如果运行环境是Node.js 10以下的旧版本,可以引入Node.js内置的url模块使用legacy解析API:
const url = require('url'); const inputUrl = 'http://www.localhost:8080/api/numbers/prime?amount=13'; const urlObj = url.parse(inputUrl); const purePath = urlObj.pathname.slice(1);
实现说明
- 两种写法都完全不依赖第三方包,所有能力都是Node.js运行时原生提供
- 解析逻辑会自动忽略URL的协议、域名、端口、查询参数、哈希锚点等无关部分,只会提取路径内容
- 即使后续查询参数变化、端口修改,这段逻辑都可以稳定提取到正确的路径值
内容的提问来源于stack exchange,提问作者Bar
相关产品推荐
相关产品推荐

