本篇文章帶大家學習http模組相關內容,為寫入介面做基礎,希望對大家有幫助!
一、Web伺服器
什麼是web伺服器?
當應用程式(客戶端)需要某一個資源時,可以向一個台伺服器,透過Http請求取得到這個資源;提供資源的這個伺服器,就是一個Web伺服器;
1.1 伺服器初步體驗
1.2 建立伺服器的兩種方式
- http.createServer會回傳伺服器的物件
- 底層其實是用直接new Server 物件
1.3 request 物件
request物件中封裝了客戶端給我們伺服器傳遞過來的所有資訊
本次請求的URL,伺服器需要根據不同的URL進行不同的處理;
本次請求的請求方式,例如GET、POST請求傳入的參數和處理的方式是不同的;
本次請求的headers中也會攜帶一些訊息,例如客戶端資訊、接受資料的格式、支援的編碼格式等等…
常規請求:
#1.3.1 request-url
客戶端在發送請求時,會請求不同的數據,那麼會傳入不同的請求位址,伺服器端需要根據不同的請求位址,作出不同的回應。
如果使用者的請求位址中還攜帶有一些額外參數,我們該如何解析呢?
我們可以使用 url 模組。
其中,url 模組提供用於網址處理和解析的實用工具
導入url const url = require('url')
假設我們的請求資料是:
控制台解析url 的結果是:
#其中pathname才是我們最後需要取得的路徑。我們的目的是把 username 和 password 在query中分開取得。
導入querystring 模組const qs = require('querystring');
const http = require("http")const url = require('url')const qs = require('querystring')// 1. 创建服务器const server = http.createServer((req, res) => { // 使用内置模块 const{ pathname,query } = url.parse(req.url) if(pathname === '/login'){ console.log(query); console.log(qs.parse(query)); const { username, password } = qs.parse(query) console.log(username,password); res.end('请求结束') }});// 2. 设置端口号并启动服务器server.listen(8888,'0.0.0.0',()=>{ console.log("服务器启动成功~");})
- ✅控制台輸出結果:
1.3.2 request-method
在Restful規格(設計風格)中,我們對於資料的增刪改查應該透過不同的請求方式:
- GET:查詢資料;
- POST:新建資料;
- PATCH:更新資料;
- DELETE:刪除資料
我們可以透過判斷不同的請求方式(method)來進行不同的處理。
假設下面是我們的在 body 的JSON請求資料—>如何使我們的伺服器取得到username和password呢?
- ✅控制台輸出結果
1.3.2 request-headers
#content-type是這次請求攜帶的資料的類型:
- application/json表示是一個json型別;
- text/plain表示是文字型別;
- application/xml表示是xml型別;
- multipart/form-data表示是上傳檔案;
**content-length:**檔案的大小和長
keep-alive:
#- http是基於TCP協定的,但是通常在進行一次請求和回應結束後會立刻中斷;
- 在http1.0中,如果想要繼續保持連線: ①瀏覽器需要在請求頭中加入 connection: keep-alive;②伺服器需要在回應頭中加入 connection:keey-alive;③當客戶端再次放請求時,就會使用同一個連接,直接一方中斷連線;
- 在 http1.1中,所有連線預設是 connection: keep-alive的:①不同的Web伺服器會有不同的保持keep-alive的時間;②Node中預設是5s中
# **accept-encoding:**告知伺服器,客戶端支援的檔案壓縮格式,例如js檔案可以使用gzip編碼,對應.gz檔案
**accept:**告知伺服器,客戶端可接受檔案的格式類型;
**user-agent:**客戶端相關的資訊;
1.4 response 物件
1.4.1 response-回應物件
如果我們希望給客戶端回應的結果數據,可以透過兩種方式:
- Write方法:這種方式是直接寫出數據,但是並沒有關閉流;
- end方法:這種方式是寫出最後的數據,並且寫出後會關閉流;
注意:如果我們沒有呼叫end 和close ,客戶端會將一直等待結果。
1.4.2 response-回應碼
Http狀態碼(Http Status Code)是用來表示Http回應狀態的數字碼:
- Http狀態碼非常多,可以根據不同的情況,給客戶端回傳不同的狀態碼;
- #常見的狀態碼是下面這些(後續項目中,也會用到其中的狀態碼)
- http狀態碼大全
類別 | ||
---|---|---|
#原因短語 | ||
1xx | Informational(資訊性狀態碼) | #接受的請求正在處理 |
2xx | Success(成功狀態碼) | 請求正常處理完畢 |
3xx | Redirection(重定向) | 需要進行附加操作以完成請求 |
5xx | Server Error(伺服器錯誤)伺服器處理請求出錯 | 常見的回應碼: |
---|---|---|
#狀態碼 | 描述狀態 | |
說明 | ||
#200 | ##OK請求成功。一般用於GET與POST請求 | |
Bad Request | 客戶端請求的語法錯誤,伺服器無法理解 | |
Unauthorized | 要求使用者的身份認證 | |
Forbidden | 伺服器理解請求客戶端的請求,但是拒絕執行此請求 | |
Not Found | 伺服器無法根據客戶端的請求找到資源(網頁)。透過此程式碼,網站設計人員可設定"您所要求的資源無法找到"的個性頁面 |
Internal Server Error伺服器內部錯誤,無法完成請求
503
由於超載或系統維護,伺服器暫時的無法處理客戶端的請求。延時的長度可包含在伺服器的Retry-After頭資訊中
- #設定狀態碼:
-
以上是帶你深入了解HTTP模組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript核心數據類型在瀏覽器和Node.js中一致,但處理方式和額外類型有所不同。 1)全局對像在瀏覽器中為window,在Node.js中為global。 2)Node.js獨有Buffer對象,用於處理二進制數據。 3)性能和時間處理在兩者間也有差異,需根據環境調整代碼。

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3漢化版
中文版,非常好用

Dreamweaver CS6
視覺化網頁開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)