URL-адрес Rust удаляет определенные параметры GET

У меня этот URL-адрес String: "http://blah.com/a/b?a=1&b=2".

Как я могу удалить или заменить параметр GET на b или полностью удалить параметры с помощью Rust?

ParseOptions пакета rust-url, похоже, мне ничего не дает.

Могу ли я просто использовать методы String для поиска / замены?


person Alex    schedule 02.07.2020    source источник
comment
Я попытался изменить запрос. Смотрите мой ответ. Могут быть способы получше, но он работал.   -  person Günter Zöchbauer    schedule 02.07.2020


Ответы (1)


let mut url = Url::parse("http://blah.com/a/b?a=1&b=2").unwrap();
url.set_query(None);

Вы также можете взять запрос в виде пар и управлять им https://docs.rs/url/2.1.1/url/struct.Url.html#method.query_pairs_mut

Пример того, как обновить значение запроса для b (осторожно, я новичок в Rust)

  use url::Url;
  fn main() {
      let url = Url::parse("http://blah.com/a/b?a=1&b=2").unwrap();
      let query: Vec<(_, _)> = url.query_pairs()
          .filter(|p| p.0 != "b")
          .collect();

      let mut url2 = url.clone();
      url2.set_query(None);

      for pair in query {
          url2.query_pairs_mut()
              .append_pair(&pair.0.to_string()[..], &pair.1.to_string()[..]);
      }
      url2.query_pairs_mut()
      .append_pair("b", "5");

      println!("New Query: {}", url2);
  }
person Günter Zöchbauer    schedule 02.07.2020