【入門Node.js之HTTP

來源:互聯網
上載者:User

標籤:嵌套   進階   電訊廠商   資料包   learn   資源   伺服器端   node.js   網域名稱註冊   

一、HTTP相關知識

HTTP是一種協議,電腦要共同遵從這種規則,才能相互連信。

  • http用戶端發起請求,建立連接埠
  • http伺服器在連接埠監聽客戶請求
  • http伺服器向用戶端返回狀態和內容

瀏覽器開啟一個網站,http走過的環節

 Ⅰ 首先,對網站進行DNS網域名稱解析
  • 1、瀏覽器搜尋自身的DNS緩衝
  • 2、搜尋作業系統自身的DNS緩衝(瀏覽器沒有找到緩衝或到期)
  • 3、讀取本地的HOST檔案
  • 4、瀏覽器發起一個DNS的一個系統調用

           4.1寬頻電訊廠商伺服器查看本身緩衝-》

4.2電訊廠商伺服器發起一個迭代DNS解析的請求(根域->頂級域->網域名稱註冊商(IP地址))

4.3電訊廠商伺服器把結果返回給作業系統核心同時緩衝起來

4.4作業系統核心把結果返回給瀏覽器

  • 5、讓瀏覽器拿到網站的IP地址,DNS解析完成,發起HTTP"三向交握"
  • 6、TCP/IP串連建立起來後,瀏覽器就可以向伺服器發送HTTP請求,比方說,用HTTP的GET方法請求一個根域裡的一個網域名稱,協議可以採用HTTP1.0的一個協議
  • 7、伺服器端接受到了這個請求,根據路徑參數,經過後端的一些處理之後,把處理後的一個結果的資料返回給瀏覽器。(這時會把網站完整的HTML頁面代碼返回給瀏覽器)
  • 8、瀏覽器拿到了網站的完整的HTML頁面代碼,在解析和渲染這個頁面的時候,裡面的JS、CSS、圖片靜態資源,他們同樣也是一個個HTTP請求,都需要經過上面的主要的七個步驟.
  • 9、瀏覽器根據拿到的資源對頁面進行渲染,最終把一個完整的頁面呈現給了使用者
 Ⅱ HTTP流程可分為請求/響應兩部分

HTTP的組成:

  • HTTP: 發送的是一些附加的資訊(內容類型伺服器發送響應的日期,HTTP狀態代碼)
  • 本文資訊: 使用者提交的表單資訊 
 二、以具體網站分析HTTP的流程

 

http要求方法:

  • Get:擷取,讀取資料
  • Post:提交資源
  • Put:更新
  • Delete:刪除
  • Head 與get方法相同,但伺服器不傳回資源

 

狀態代碼:伺服器端返回瀏覽器,告知瀏覽器請求成功或失敗的資訊

  • 1XX請求已經接受
  • 2XX請求成功並處理成功
  • 3XX重新導向
  • 4XX用戶端錯誤
  • 5XX伺服器端錯誤
  • 200:OK,請求成功
  • 400:用戶端請求有語法錯誤
  • 401:請求未經授權
  • 403:收到請求,但不提供服務
  • 404:資源未找到
  • 500:伺服器端未知錯誤
  • 503:伺服器端當前不能處理請求
  三、事件回調進階 Nodejs中http模組不解析請求的具體內容,只分離出要求標頭和請求體 1、什麼是回呼函數?

回調試非同步編程時的基礎,將後續邏輯封裝成起始函數的參數,逐層嵌套

function learn(something){    console.log(something)}function we(callback, something){    something += ‘is cool‘    callback(something)}//傳入具名函數we(learn, ‘Nodejs‘)//傳入匿名函數we(function(something){    console.log(something)}, ‘Jade‘)
2、什麼事同步/非同步?

同步:發送方發送資料後,等待接收方發迴響應以後才發下一個資料包的通訊方式

非同步:發送方發出資料後,不等接收方發迴響應,接著發送下個資料包的通訊方式

3、什麼是I/O?

磁碟的寫入(in)磁碟的讀取(out)

4、什麼是單線程/多線程?

一次只能執行一個程式叫做單線程 一次能執行多個程式叫做多線程

5、什麼是阻塞/非阻塞?

阻塞:前一個程式未執行完就得一直等待

非阻塞:前一個程式未執行完時可以掛起,繼續執行其他程式,等到使用時再執行

6、什麼是事件?

一個觸發動作(例如點擊按鈕)

7、什麼是事件驅動?

一個觸發動作引起的操作(例如點擊按鈕後彈出一個對話方塊)

 

function clickIt(e){    window.alert(‘Button is clicked‘)}var button = document.getElementById(‘#button‘)      button.addEventListener(‘click‘, clickIt)
8、什麼是基於事件驅動的回調?

為了某個事件註冊了回呼函數,但是這個回呼函數不是馬上執行,只有當事件發生的時候,才會調用回掉函數,這種函數執行的方式叫做事件驅動~這種註冊回調就是基於事件驅動的回調,如果這些回調和非同步I/O(資料寫入、讀取)操作相關,可以看作是基於回調的非同步I/O。只不過這種回調在nodejs中是有事件來驅動的

9、什麼是事件迴圈?

事件迴圈Eventloop,倘若有大量的非同步作業,一些I/O的耗時操作,甚至是一些定時器控制的延時操作,它們完成的時候都要調用相應的回呼函數,而從完成一些密集的任務,而又不會阻塞整個程式執行的流程,此時需要一種機制來管理,這種機制叫做事件迴圈 總而言之,管理大量非同步作業的機制叫做事件迴圈

EventLoop: 回呼函數隊列,非同步執行的函數會被壓入這個隊列;隊列被迴圈查詢。

 

【入門Node.js之HTTP

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.