我正在使用一个新版本的Node.js,它有一种新的解析URL的方法。调用new URL()
而不是url.parse
。
我遇到的一个问题是如何解析和更新/操作URL。
例如,使用旧的url.parse
,我可以这样做:
const p = url.parse('http://example.com')
const edits = {...p, protocol: 'https'}
const np = url.format(edits)
这是一个我正在更改URL模式的示例。
这将使用新的API来完成,如下所示:
const p = new URL('http://example.com')
然而,这个技巧对于新的URL似乎是不可能的,因为新的URL返回一个符号,所以传播p
的新值不起作用。更糟糕的是,p
的一些属性是只读的,这很有趣,这意味着我不能直接赋值。
该实例中有一个.toJSON()
方法,具有讽刺意味的是,它并不提供解析后的URL的JSON值,而是提供组装后的URL的字符串版本。
我很好奇如何使用新的Node URL API编辑和重组URL。
发布于 2019-12-12 12:04:53
我惊讶地发现并不是所有的属性都是只读的,而且searchParams
参数有一个设置器。
const host = 'https://connect.stripe.com'
const clientId = config.get('STRIPE_CLIENT_ID')
const parsedUrl = new URL('/oauth/authorize', host)
parsedUrl.searchParams.set('scope', 'read_write')
parsedUrl.searchParams.set('client_id', clientId)
parsedUrl.searchParams.set('response_type', 'code')
console.log(parsedUrl.toString())
https://stackoverflow.com/questions/59303944
复制相似问题