[Guide] 使用 JS 解析網址與處理網址中的參數(URL Parameters)
keywords: parse URL
, parameter
, URL
, query string
由於前後端分離的趨勢,很多的前端網頁都是透過 API 的方式向後端要資料,而最普遍的就是使用 GET
方法在網址後面加上「參數(parameters)」或稱「查詢字串(query string)」來向後端索取資料。
由於在瀏覽器內建用來發送 AJAX 請求的 Fetch API 似乎除了把整個 URL 代進去之外,好像沒有看到其他比較漂亮用來設定網址參數的方法,但是網址參數的部分有時候真的時又臭又長,把它整個放進去實在不太好閱讀。
找了一下,發現其實不需要額外裝什麼套件就可以處理網址的解析和網址參數的設定,瀏覽本身就提供了 URL 和 URLSearchParams 的 WebAPIs 可以使用。
// 直接把網址參數代入
fetch('https://github.com/search?q=react&type=Code').then(function (response) {
// Do something ...
});
如果對於網址各部分的名稱不太清楚,可以參考這篇:網址 URL 英文大小寫是否有差別?。
讓我們來看一下可以怎麼使用這些 API 來解析網址和設定網址中的參數。
解析網址(Parsing URL)
要解析網址的話,可以使用瀏覽器內建的 URL 這個 Web API,使用的方式很簡單,把網址代進去 URL
建構式就可以了:
let githubURL = new URL('https://github.com/search?q=react&type=Code');
建立好了之後就可以使用幾個不同的屬性來取得網址的內容:
// 取得完整網址(URL)
githubURL.href; // "https://github.com/search?q=react&type=Code"
// 取得網址中的主機名稱
githubURL.hostname; // "github.com"
// 取得網頁路徑部分
githubURL.pathname; // "/search"
// 取得網址中的通訊協定部分
githubURL.protocol; // "https:"
// 取得網頁參數部分
githubURL.search; // "?q=react&type=Code"
githubURL.searchParams; // URLSearchParams {}
透過把網址輸入 URL
建構式之後,瀏覽器幾乎把所有網址的部分都解析完了,透過 githubURL.search
這個方法雖然可以取得完整的網址參數部分,但是還沒有把內容完全解析出來,這時候可以使用 githubURL.searchParams
這個物件。
URLSearchParams
githubURL.searchParams
這個物件是透過另一個名為 URLSearchParams 的 Web API 所建立的,透過這個 API 可以很方便的幫去設定、刪除和讀取網址字串的部分。
想要檢視這個 URLSearchParams
物件最簡單的方是直接使用 .toString()
方法:
// 檢視 URLSearchParams 物件
githubURL.searchParams.toString(); // "q=react&type=Code"