这可以通过 Node 的path和URL的组合来完成:
- 需要软件包:
const nodeUrl = require('url')
const nodePath = require('path')
- 首先创建一个可以使用的 URL 对象:
> const myUrl = new nodeUrl.URL('https://example.com')
- 使用
pathname=
andpath.join
构造任何可能的组合:
> myUrl.pathname = nodePath.join('/search', 'for', '/something/')
'/search/for/something/'
(你可以看到path.join
论点是多么的自由)
- 此时,您的 URL 反映了最终所需的结果:
> myUrl.toString()
'https://example.com/search/for/something/'
为什么采用这种方法?
该技术使用内置库。在 CVE、维护等方面,第三方依赖项越少越好。
没有什么比标准库更能证明或更好地测试了。
PS:永远不要将 URL 当作字符串来操作!
当我查看代码时,我坚持永远不要手动将 URL 操作为字符串。一方面,看看规范有多复杂。
其次,尾随/前缀斜杠 ( ) 的缺失/存在/
不应导致一切中断!你不应该这样做:
const url = `${baseUrl}/${somePath}`
尤其不是:
uri: host + '/' + SAT_SERVICE + '/' + CONSTELLATION + '/',
其中我见过。