url模塊

URL路由
URL:Uniform Resource Locator。統一資源定位器。還有一個就是URI(統一資源標識符),其中的I是指identifier。URL是基於URI的。在互聯網中,任何一個資源(html、css、js、img、動畫、視頻、音頻、word)需要保證它的唯一性。可以給每一個資源指定一個唯一的URL。簡單來說,URL就是我們常說的網址。

在web當中,用戶輸入不同的URL,服務器就接收到這個信息,需要處理這個信息,根據不同的請求,返回相應的內容。這個過程就是URL路由。我們可以通過req對象(IncomingMessage對象)中的url屬性,來獲取相關的信息,並進行處理。

Node.js提供了一個url模塊,可以解析url,得到更爲詳細的信息。url.parse(url)得到一個對象,裏邊包含整個url中的各種信息。

代碼片段:

瀏覽器輸入 localhost:3000/user?username=admin&pwd=123
路由處理 let realUrl = "http://"+ req.headers.host + req.url;
        let urlObj = url.parse(realUrl);//得到查詢字符串query : 'username=admin&pwd=123'
解析查詢字符串
打開一個網頁,很多情況下路徑名不發生變化,改變查詢字符串,就會顯示不同內容;附加的一些信息,需要根據這些信息,顯示不同的內容給用戶。

格式:?鍵1=值1&鍵2=值2&鍵n=值n

使用url.parse方法解析url之後,可以拿到查詢字符串

Node.js提供了querystring 模塊,其中有 parse 方法,可以將字符串解析成對象;這樣就可以直接通過屬性來獲取相對應的值。

  1. 我們前邊已經學了通過request.url獲取用戶訪問的url,進而編寫路由代碼,將用戶需要的數據或者是文件發給用戶。
  2. 前邊我們使用的url都是隻有文件路徑,一般情況下,我們在請求服務器的時候,還會給服務器發送一些數據,這些數據會被配置在url的後邊,就想這樣:https://hao.360.cn/?src=lm&ls=n642410819f ,這代表訪問服務器根目錄,並給服務發送了兩條數據(數據被加密了)—— src=lm      ls=n642410819f。
  3. 我們現在寫一個node服務器,用來輸出用戶訪問的url。然後使用127.0.0.1:8888/?name=sc&age=18來訪問這個服務器。我們會得到   
  4. 而我們編寫的路由時只需要用文件路徑部分“/”,用戶發過來的數據(name=sc&age=18)還有其他作用,這時我們就需要對用戶請求url進行處理,也就是查分成不用的部分。

 

  1. 一個較完整的url——

{協議}://{用戶名}:{密碼}@{主機名}:{端口號}/{路徑}/{文件}?{參數}

2.當然我們的重點是研究我們需要的部分(端口以後的部分),然後瞭解端口之前部分(node服務器無法獲得這部分url)

3.要想完成拆解url的目的,我們需要學習另外兩個模塊 url模塊、querystring模塊

Url模塊 :拆分url

Querystring :將參數轉化爲對象(使用url拆解後得到的參數部分還不能直接使用,需要轉換爲對象,才能使用。)

Url模塊

  1. 因爲在服務器中使用request.url()的方式無法獲得完整的url,所以我們需要自定義一個url做我們的小白鼠。
    1. url.URL 獲得一個構造方法,用來構造url對象
    2. url.parse() 將字符串形式的url轉化爲對象
    3. Url.format() 將對象形式的url轉化爲字符串
    4. 補充一點:我們通過request.url()獲得的是字符串形式的url
  2. 一個url對象包含如下屬性:http://127.0.0.1:8888?name=sc&age=18’

  1. url對象的屬性詳解
  2. 我們需要也必須掌握的屬性只有兩個 pathname與search(因爲request.url與path作用一致)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章