我正在使用此代码从网址中删除查询参数,但它无效。你能好好看一下吗?
const url = require('url')
const obj = url.parse('http://www.example.com/path?query1=val1&query2=val2', true)
delete obj.query.query2
const link = url.format(obj)
console.log(link) // I was expecting the removal of query2 but it didn't happen
它记录了与上面传递的相同的网址,为什么query2
未删除?感谢
答案 0 :(得分:2)
您需要从对象中删除搜索节点
const obj = url.parse('http://www.example.com/path?query1=val1&query2=val2', true)
delete obj.query.query2
delete obj.search
const link = url.format(obj)
console.log(link)
这会返回您的网址https://github.com/Microsoft/VisualStudio2017Launch_KeynoteDemos/tree/master/VSTS%20and%20DevOps
答案 1 :(得分:1)
即使您从查询对象中删除了query2
,搜索字段中仍然存在query2
。
const url = require('url');
const obj = url.parse('http://www.example.com/path?query1=val1&query2=val2', true)
console.log(obj);
delete obj.query.query2
delete obj.search
console.log(obj);
const link = url.format(obj)
console.log(link)
答案 2 :(得分:1)
如果您查看url模块的源代码(https://github.com/defunctzombie/node-url/blob/master/url.js)。你可以看到 它将首先查看搜索节点(第413行)。同时删除它,以便评估查询对象。
删除obj.search;
答案 3 :(得分:0)
const url = require("url")
const urlObj = url.parse('http://www.example.com/path?query1=val1&query2=val2', true)
delete urlObj.query.query2
delete urlObj.search
const newUrl = url.format(urlObj)
console.log(newUrl) // print >> http://www.example.com/path?query1=val1