如何从 Rust 中的 url 中删除特定查询?
How to remove particular query from url in rust?
我一直在尝试从 URL 中删除特定查询(例如:“remove=me”),但似乎没有 API
use url::{Url};
fn main(){
let mut url = Url::parse("https://www.example.com/foo?id=1&remove=me").unwrap();
url.set_query(None); // This will remove all the query parameters
println!("{}", URL);
// expected result: https://www.example.com/foo?id=1
// actual result: https://www.example.com/foo
}
的确,url
板条箱让它变得很尴尬。查询字符串只能追加或清除。编辑它需要一些技巧:生成一组过滤后的 name/value 对,然后清除并扩展查询字符串。
let mut url = Url::parse("https://www.example.com/foo?id=1&remove=me").unwrap();
let query: Vec<(String, String)> = url
.query_pairs()
.filter(|(name, _)| name != "remove")
.map(|(name, value)| (name.into_owned(), value.into_owned()))
.collect();
url.query_pairs_mut().clear().extend_pairs(&query);
println!("{}", url);
我一直在尝试从 URL 中删除特定查询(例如:“remove=me”),但似乎没有 API
use url::{Url};
fn main(){
let mut url = Url::parse("https://www.example.com/foo?id=1&remove=me").unwrap();
url.set_query(None); // This will remove all the query parameters
println!("{}", URL);
// expected result: https://www.example.com/foo?id=1
// actual result: https://www.example.com/foo
}
的确,url
板条箱让它变得很尴尬。查询字符串只能追加或清除。编辑它需要一些技巧:生成一组过滤后的 name/value 对,然后清除并扩展查询字符串。
let mut url = Url::parse("https://www.example.com/foo?id=1&remove=me").unwrap();
let query: Vec<(String, String)> = url
.query_pairs()
.filter(|(name, _)| name != "remove")
.map(|(name, value)| (name.into_owned(), value.into_owned()))
.collect();
url.query_pairs_mut().clear().extend_pairs(&query);
println!("{}", url);