在百度百科的解釋:
超文本傳輸協定(Hyper Text Transfer Protocol,HTTP)是一個簡單的請求-回應協議,它通常運行在TCP之上。它指定了客戶端可能發送給伺服器什麼樣的訊息以及得到什麼樣的回應。請求和回應訊息的頭以ASCII形式給出;而[9] 訊息內容則具有一個類似MIME的格式。這個簡單模型是早期Web成功的有功之臣,因為它讓開發和部署非常直截了當。
如果學過JavaSE基礎的,應該對網路程式設計很熟悉
當然沒學過也沒事,且聽良心作者我為您訓娓道來:
1.1、網路通訊協定
在2022年的今天,電腦網路已經成為了人們日常生活的必需品,無論是郵件、與朋友聊天的即時通訊、短視頻娛樂·······可以說,我們透過電腦網路可以使得多台電腦實現連接。
電腦網路透過傳輸媒體、通訊設施、和網路通訊協議,把在一個網路下的多個電腦設備連接起來,實現了資源共享和資料傳輸。
但是在同一個網路的電腦進行連接和通訊的時候,必要遵守一定的規則,在電腦網路中,這些連接和通訊的規則叫做網路通訊協定:
我們這裡講到的http協定就是基於tcp實現的。常見的http應用程式場景就是你在瀏覽器輸入一串位址,然後回到過來一個網頁。
1.2、IP位址和連接埠號
要使得網路中的電腦能夠進行通信,還必須為每台電腦指定一個識別號,透過這個識別號來指定接收資料的電腦或指定發送資料的電腦。
查看自己的電腦在區域網路的ip位址在windows電腦中按WIN+R鍵盤輸入cmd快速進入控制台
ipconfig
透過IP位址可以連接到指定的計算機,但如果想存取目標計算機中你的某個應用程序,還需要指定連接埠號碼。
例如MySQL的3306、TomCat的8080
Node.js 提供了http 模組,http 模組主要用於搭建HTTP 服務端和用戶端,使用HTTP 伺服器或客戶端功能必須呼叫http 模組。
2.1、厚積(細講,詳細介紹用到的對象方法,整個http服務搭建流程)
流程簡介:
先用createServer()方法註冊server對象,
然後用這個server對象去呼叫on()方法監聽處理事件,
呼叫listen()方法去綁定連接埠號碼
開始淺嚐:
任何網路服務應用程式總是要先建立一個服務物件。在nodeJS我們可以使用createServer方法來實現,
// 先導入http模組const http = require('http'); // 建立http服務物件const server = http.createServer();
由createServer 建構子傳回的Server物件是一個事件發射器,在這裡用建立好的server物件利用他自帶的on()方法對它進行事件監聽處理。這樣,每當有http請求發送過來,我們就可以進行處理了。
// 先導入http模組const http = require('http'); // 建立http服務物件const server = http.createServer(); // 綁定事件監聽server.on('request', (request, response) => { // 永遠相信美好的事即將發生! });
我們前面有介紹過(IP位址+連接埠),其中IP位址在我們電腦連網的時候,路由器就會自動DHCP分配給我們,但要想存取電腦上指定的程式也必須有連接埠號碼。
為了存取電腦上的指定程序,我們還要用到listen()方法。你只需要用server.listen()把連接埠號碼當作參數傳入listen 方法中,當作監聽埠。
// 先導入http模組const http = require('http'); // 建立http服務物件const server = http.createServer(); // 綁定事件監聽server.on('request', (req, res) => { // 此函式內容只是小小呼叫一下res參數讓程式更易懂的跑起來// 寫回應頭(不寫瀏覽器不辨識) res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'}); // 發送回應資料res.end("<h1>歡迎使用node.js搭建服務</h1>"); }); // 綁定埠號碼server.listen(8888); // 控制台列印位址,方便快速偵錯console.log('您的http服務啟動在http://127.0.0.1:8888/');
程式碼執行示範:
上述程式碼示範十分細節,但是實際開發起來,不建議這樣一步步寫,過於繁瑣了
接下來跟著作者,讓我們繼續優化一下程式碼,讓程式碼更加牛逼且簡潔
2.2、薄髮(極簡才是王道
,
優雅
! ); const server = http.createServer(function(req,res){ // 永遠相信美好的事情即將發生}).listen(8080);
每當有HTTP 請求到達伺服器時,createServer 中傳入的函數就會自動執行。所以這個函數也被稱為是請求處理函數。我們可以直接在裡面傳入事件監聽的回呼函數,然後後面點上listen()方法,直接綁定埠號。
但是這樣還不夠好,是的,還可以更好,把上面回呼函數用箭頭函數修飾一下,更加美觀。
const http = require('http'); const server = http.createServer((req,res) => { // 永遠相信美好的事情即將發生}).listen(8080);
當然
這
還不夠好
還可以更好!
直接一個createServer()解決一切:
var http = require('http') // 建立伺服器http.createServer( (req, res) =>{ // 永遠相信美好的事物即將發送}).listen(8888);
看到這裡,恭喜你已經入門了nodeJS的http模組此時此刻的你已經掌握瞭如下技能
請繼續關注作者,接下來我們將學習