之前介紹過在 .NET 中可以使用 Utility.ParseQueryString 處理 Url 中的參數,傳送門 : 使用 ParseQueryString 取得網址參數,但所使用的 System.Web 命名空間僅存在於 ASP.NET Framework 不支援 ASP.NET Core,在搜尋更好的解決方案中發現了在 ASP.NET Core 提供新的 API - QueryHelpers 可以達到同樣效果,此篇介紹如何使用 queryHelpers 建立與解析 querystring 參數,若有問題歡迎留言討論
下載
QueryHelpers 從 .NET Core 1.0 RC2 就開始支援,命名空間為 Microsoft.AspNetCore.WebUtilities,使用前須先透過 Nuget Package Manager 下載
在 Visual Studio 2019 專案點擊 Project 檔案可直接開啟,確認是否有安裝成功Install-Package Microsoft.AspNetCore.WebUtilities -Version 2.2.0
產生 QueryString
有多個參數需求時可以傳入 Dictionarystring url = QueryHelpers.AddQueryString("/api/demo", "key1", "value1"); // result : api/demo?key1=value1
輸入中文字,會自動 url Encode (覺得實用,好棒棒!!!)var queryParams = new Dictionary<string, string>() { {"key1", "value1" }, {"key2", "value2" }, {"key3", "value3" } }; url = QueryHelpers.AddQueryString("/api/demo/list", queryParams); // result : api/demo/list?key1=value1&key2=value2&key3=value3
url = QueryHelpers.AddQueryString("/api/demo/list", "高雄", "發大財"); // result : api/demo/list?%E9%AB%98%E9%9B%84=%E7%99%BC%E5%A4%A7%E8%B2%A1
ar rawurl = "https://marcusblog.com/api/product/list?key1=value1&key2=value2&key3=value3&key1=value1&key5="; var uri = new Uri(rawurl); var baseUri = uri.GetComponents(UriComponents.Scheme | UriComponents.Host | UriComponents.Port | UriComponents.Path, UriFormat.UriEscaped); var query = QueryHelpers.ParseQuery(uri.Query); var items = query.SelectMany(x => x.Value, (col, value) => new KeyValuePair<string, string>(col.Key, value)).ToList(); // result : // key1/value1 // key2/value2 // key3/value3
上面介紹兩種在 ASP.NET Core API 產生 QueryString 的方式,都可以達到目的,各位在使用上可以依據喜好來決定使用哪一種 :)var qs = new QueryBuilder(); qs.Add("key1", "test"); qs.Add("key2", "1111"); var result = qs.ToQueryString(); // result : ?key1=test&key2=1111
參考
0 意見:
張貼留言