平時可能會使用字串拼接的方式組裝網址,例如:
但是常常會遇到到底要不要加斜線的問題,如果這些內容又是放在設定檔的話,無法確保使用者的輸入內容,在讀取參數時每項又要做檢查,非常繁瑣。
另外 UriBuilder 還支援帳號密碼,對於需要身分驗證的 URL 來說非常好用
延伸閱讀: C# URI 介紹,網址拆分、拼接、URL encode, decode 教學
參考資料:
Microsoft.Learn - UriBuilder Class
string baseUrl = $"https://ruyut.app/api";
string apiPath = "test/1";
string query1 = "a1";
string url = $"{baseUrl}/{apiPath}?q1={query1}";
Console.WriteLine(url);
// https://ruyut.app/api/test/1?q1=a1
但是常常會遇到到底要不要加斜線的問題,如果這些內容又是放在設定檔的話,無法確保使用者的輸入內容,在讀取參數時每項又要做檢查,非常繁瑣。
UriBuilder 連結組裝範例
下面是使用 UriBuilder 常用的 6 個屬性來設定連結:
UriBuilder urlBuilder = new UriBuilder
{
Scheme = "https", // URL 協議
Port = 8080, // 連接埠,可省略 (int)
Host = "ruyut.app", // 主機、網域
Path = "test/1", // 路徑
Query = "q1=a1&q2=a2", // 查詢參數
Fragment = "section1", // 內部連結、錨點
};
Console.WriteLine(urlBuilder.Uri);
// https://ruyut.app:8080/test/1?q1=a1&q2=a2#section1
另外 UriBuilder 還支援帳號密碼,對於需要身分驗證的 URL 來說非常好用
// 接續上面的程式碼
urlBuilder.UserName = "user"; // 使用者名稱
urlBuilder.Password = "password"; // 使用者密碼
Console.WriteLine(urlBuilder.Uri);
// https://user:password@ruyut.app:8080/test/1?q1=a1&q2=a2#section1
UriBuilder 變更網址
上面的建立連結都還好說,平時最討厭的就是替換部分內容,例如要讓 port 可以變更,又少不了一堆字串拼接。 不過 UriBuilder 最好用的就是替換了。任何部分都可以直接變更
string defaultUrl = "https://ruyut.app:8080/test/1?q1=a1&q2=a2#section1";
UriBuilder urlBuilder = new UriBuilder(defaultUrl);
urlBuilder.Scheme = "http";
urlBuilder.Port = 80;
urlBuilder.Host = "m.ruyut.app";
urlBuilder.Path = "api/test/1";
urlBuilder.Query = "qq=aa";
urlBuilder.Fragment = "title";
Console.WriteLine(defaultUrl);
// https://ruyut.app:8080/test/1?q1=a1&q2=a2#section1
Console.WriteLine(urlBuilder.Uri);
// http://m.ruyut.app/api/test/1?qq=aa#title
延伸閱讀: C# URI 介紹,網址拆分、拼接、URL encode, decode 教學
參考資料:
Microsoft.Learn - UriBuilder Class
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com