👋
[備忘録08]作って学ぶブラウザのしくみ / URLの構文解析の実装/ URLの分割の実装/クエリパラメータを取得
http://example.com:8080/path/to/resource?query=string
上記のurlを例にクエリパラメータを取得する実装をする。
rustのplaygroundに以下を貼り付けて実行してみた方が理解早いと思います。
pub fn type_of<T>(_: &T) -> &'static str {
std::any::type_name::<T>()
}
fn main() {
println!("Hello, world!");
let url_sample: String = "http://example.com:8080/path/to/resource?query=string".to_string();
fn extract_path(hoge:String)-> String{
let url_parts: Vec<&str> = hoge
.trim_start_matches("http://")
.splitn(2, "/")
.collect();
print!("{:?}\n", url_parts);
if url_parts.len() < 2 {
"/".to_string();
}
let path_and_serachpart: Vec<&str> = url_parts[1].splitn(2, "?").collect();
if path_and_serachpart.len() < 2 {
"".to_string()
}else{
print!("{:?}", path_and_serachpart[1].to_string());
path_and_serachpart[1].to_string()
}
}
print!("{}", extract_path(url_sample));
}
ちなみに出力は以下のようになります。
Hello, world!
["example.com:8080", "path/to/resource?query=string"]
"query=string"query=string
Discussion