本篇文章帶大家學習http模組相關內容,為寫入介面做基礎,希望對大家有幫助!
什麼是web伺服器?
當應用程式(客戶端)需要某一個資源時,可以向一個台伺服器,透過Http請求取得到這個資源;提供資源的這個伺服器,就是一個Web伺服器;
1.1 伺服器初步體驗
1.2 建立伺服器的兩種方式
1.3 request 物件
request物件中封裝了客戶端給我們伺服器傳遞過來的所有資訊
本次請求的URL,伺服器需要根據不同的URL進行不同的處理;
本次請求的請求方式,例如GET、POST請求傳入的參數和處理的方式是不同的;
本次請求的headers中也會攜帶一些訊息,例如客戶端資訊、接受資料的格式、支援的編碼格式等等…
常規請求:
客戶端在發送請求時,會請求不同的數據,那麼會傳入不同的請求位址,伺服器端需要根據不同的請求位址,作出不同的回應。
如果使用者的請求位址中還攜帶有一些額外參數,我們該如何解析呢?
我們可以使用 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("服务器启动成功~");})
在Restful規格(設計風格)中,我們對於資料的增刪改查應該透過不同的請求方式:
我們可以透過判斷不同的請求方式(method)來進行不同的處理。
假設下面是我們的在 body 的JSON請求資料—>如何使我們的伺服器取得到username和password呢?
#content-type是這次請求攜帶的資料的類型:
**content-length:**檔案的大小和長
keep-alive:
## **accept-encoding:**告知伺服器,客戶端支援的檔案壓縮格式,例如js檔案可以使用gzip編碼,對應.gz檔案
**accept:**告知伺服器,客戶端可接受檔案的格式類型;
**user-agent:**客戶端相關的資訊;
1.4 response 物件
如果我們希望給客戶端回應的結果數據,可以透過兩種方式:
注意:如果我們沒有呼叫end 和close ,客戶端會將一直等待結果。
Http狀態碼(Http Status Code)是用來表示Http回應狀態的數字碼:
類別 | ||
---|---|---|
#原因短語 | ||
1xx | Informational(資訊性狀態碼) | #接受的請求正在處理 |
2xx | Success(成功狀態碼) | 請求正常處理完畢 |
3xx | Redirection(重定向) | 需要進行附加操作以完成請求 |
5xx | Server Error(伺服器錯誤)伺服器處理請求出錯 | 常見的回應碼: |
---|---|---|
#狀態碼 | 描述狀態 | |
說明 | ||
#200 | ##OK請求成功。一般用於GET與POST請求 | |
Bad Request | 客戶端請求的語法錯誤,伺服器無法理解 | |
Unauthorized | 要求使用者的身份認證 | |
Forbidden | 伺服器理解請求客戶端的請求,但是拒絕執行此請求 | |
Not Found | 伺服器無法根據客戶端的請求找到資源(網頁)。透過此程式碼,網站設計人員可設定"您所要求的資源無法找到"的個性頁面 |
Internal Server Error伺服器內部錯誤,無法完成請求
503
以上是帶你深入了解HTTP模組的詳細內容。更多資訊請關注PHP中文網其他相關文章!