欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          帶你深入了解HTTP模塊

          本篇文章帶大家學(xué)習(xí)http模塊相關(guān)內(nèi)容,為寫接口做基礎(chǔ),希望對(duì)大家有所幫助!

          帶你深入了解HTTP模塊

          一、Web服務(wù)器

          什么是web服務(wù)器?

          當(dāng)應(yīng)用程序(客戶端)需要某一個(gè)資源時(shí),可以向一個(gè)臺(tái)服務(wù)器,通過Http請(qǐng)求獲取到這個(gè)資源;提供資源 的這個(gè)服務(wù)器,就是一個(gè)Web服務(wù)器;

          1.1 服務(wù)器初體驗(yàn)

          帶你深入了解HTTP模塊

          1.2 創(chuàng)建服務(wù)器的兩種方式

          • http.createServer會(huì)返回服務(wù)器的對(duì)象
          • 底層其實(shí)使用直接 new Server 對(duì)象

          帶你深入了解HTTP模塊

          1.3 request 對(duì)象

          request對(duì)象中封裝了客戶端給我們服務(wù)器傳遞過來的所有信息

          • 本次請(qǐng)求的URL,服務(wù)器需要根據(jù)不同的URL進(jìn)行不同的處理;

          • 本次請(qǐng)求的請(qǐng)求方式,比如GET、POST請(qǐng)求傳入的參數(shù)和處理的方式是不同的;

          • 本次請(qǐng)求的headers中也會(huì)攜帶一些信息,比如客戶端信息、接受數(shù)據(jù)的格式、支持的編碼格式等等…

          常規(guī)請(qǐng)求:

          帶你深入了解HTTP模塊

          帶你深入了解HTTP模塊

          1.3.1 request-url

          客戶端在發(fā)送請(qǐng)求時(shí),會(huì)請(qǐng)求不同的數(shù)據(jù),那么會(huì)傳入不同的請(qǐng)求地址,服務(wù)器端需要根據(jù)不同的請(qǐng)求地址,作出不同的響應(yīng)。

          如果用戶的請(qǐng)求地址中還攜帶有一些額外參數(shù),我們?cè)撊绾谓馕瞿兀?/p>

          我們可以使用 url 模塊。

          其中,url 模塊提供用于網(wǎng)址處理和解析的實(shí)用工具

          導(dǎo)入url const url = require(‘url’)

          假設(shè)我們的請(qǐng)求數(shù)據(jù)是:
          帶你深入了解HTTP模塊

          控制臺(tái)解析 url 的結(jié)果是:

          帶你深入了解HTTP模塊

          其中pathname才是我們最后需要獲取的路徑。我們的目的是把 username 和 password 在query中分開獲取到。

          導(dǎo)入 querystring 模塊 const qs = require('querystring');

          const http = require("http")const url = require('url')const qs = require('querystring')// 1. 創(chuàng)建服務(wù)器const server = http.createServer((req, res) => {   // 使用內(nèi)置模塊   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('請(qǐng)求結(jié)束')   }});// 2. 設(shè)置端口號(hào)并啟動(dòng)服務(wù)器server.listen(8888,'0.0.0.0',()=>{   console.log("服務(wù)器啟動(dòng)成功~");})
          • ✅控制臺(tái)輸出結(jié)果:
            帶你深入了解HTTP模塊

          1.3.2 request-method

          在Restful規(guī)范(設(shè)計(jì)風(fēng)格)中,我們對(duì)于數(shù)據(jù)的增刪改查應(yīng)該通過不同的請(qǐng)求方式:

          • GET:查詢數(shù)據(jù);
          • POST:新建數(shù)據(jù);
          • PATCH:更新數(shù)據(jù);
          • DELETE:刪除數(shù)據(jù)

          我們可以通過判斷不同的請(qǐng)求方式(method)進(jìn)行不同的處理。


          假設(shè)下面是我們的在 body 的JSON請(qǐng)求數(shù)據(jù)—>如何使我們的服務(wù)器獲取到username和password呢?

          帶你深入了解HTTP模塊

          帶你深入了解HTTP模塊

          • ✅控制臺(tái)輸出結(jié)果
            帶你深入了解HTTP模塊

          1.3.2 request-headers

          帶你深入了解HTTP模塊

          content-type是這次請(qǐng)求攜帶的數(shù)據(jù)的類型:

          • application/json表示是一個(gè)json類型;
          • text/plain表示是文本類型;
          • application/xml表示是xml類型;
          • multipart/form-data表示是上傳文件;

          **content-length:**文件的大小和長(zhǎng)

          keep-alive:

          • http是基于TCP協(xié)議的,但是通常在進(jìn)行一次請(qǐng)求和響應(yīng)結(jié)束后會(huì)立刻中斷;
          • 在http1.0中,如果想要繼續(xù)保持連接: ①瀏覽器需要在請(qǐng)求頭中添加 connection: keep-alive;②服務(wù)器需要在響應(yīng)頭中添加 connection:keey-alive; ③當(dāng)客戶端再次放請(qǐng)求時(shí),就會(huì)使用同一個(gè)連接,直接一方中斷連接;
          • 在http1.1中,所有連接默認(rèn)是 connection: keep-alive的:①不同的Web服務(wù)器會(huì)有不同的保持 keep-alive的時(shí)間; ②Node中默認(rèn)是5s中

          **accept-encoding:**告知服務(wù)器,客戶端支持的文件壓縮格式,比如js文件可以使用gzip編碼,對(duì)應(yīng) .gz文件

          **accept:**告知服務(wù)器,客戶端可接受文件的格式類型;

          **user-agent:**客戶端相關(guān)的信息;

          1.4 response 對(duì)象

          1.4.1 response-響應(yīng)對(duì)象

          如果我們希望給客戶端響應(yīng)的結(jié)果數(shù)據(jù),可以通過兩種方式:

          • Write方法:這種方式是直接寫出數(shù)據(jù),但是并沒有關(guān)閉流;
          • end方法:這種方式是寫出最后的數(shù)據(jù),并且寫出后會(huì)關(guān)閉流;

          注意:如果我們沒有調(diào)用 end 和close ,客戶端會(huì)將一直等待結(jié)果。

          1.4.2 response-響應(yīng)碼

          Http狀態(tài)碼(Http Status Code)是用來表示Http響應(yīng)狀態(tài)的數(shù)字代碼:

          • Http狀態(tài)碼非常多,可以根據(jù)不同的情況,給客戶端返回不同的狀態(tài)碼;
          • 常見的狀態(tài)碼是下面這些(后續(xù)項(xiàng)目中,也會(huì)用到其中的狀態(tài)碼)
          • http狀態(tài)碼大全
          類別 原因短語
          1xx Informational(信息性狀態(tài)碼) 接受的請(qǐng)求正在處理
          2xx Success(成功狀態(tài)碼) 請(qǐng)求正常處理完畢
          3xx Redirection(重定向) 需要進(jìn)行附加操作以完成請(qǐng)求
          4xx Client error(客戶端錯(cuò)誤) 客戶端請(qǐng)求出錯(cuò),服務(wù)器無法處理請(qǐng)求
          5xx Server Error(服務(wù)器錯(cuò)誤) 服務(wù)器處理請(qǐng)求出錯(cuò)

          常見的響應(yīng)碼:

          狀態(tài)代碼 描述狀態(tài) 說明
          200 OK 請(qǐng)求成功。一般用于GET與POST請(qǐng)求
          400 Bad Request 客戶端請(qǐng)求的語法錯(cuò)誤,服務(wù)器無法理解
          401 Unauthorized 請(qǐng)求要求用戶的身份認(rèn)證
          403 Forbidden 服務(wù)器理解請(qǐng)求客戶端的請(qǐng)求,但是拒絕執(zhí)行此請(qǐng)求
          404 Not Found 服務(wù)器無法根據(jù)客戶端的請(qǐng)求找到資源(網(wǎng)頁)。通過此代碼,網(wǎng)站設(shè)計(jì)人員可設(shè)置"您所請(qǐng)求的資源無法找到"的個(gè)性頁面
          500 Internal Server Error 服務(wù)器內(nèi)部錯(cuò)誤,無法完成請(qǐng)求
          503 Service Unavailable 由于超載或系統(tǒng)維護(hù),服務(wù)器暫時(shí)的無法處理客戶端的請(qǐng)求。延時(shí)的長(zhǎng)度可包含在服務(wù)器的Retry-After頭信息中

          設(shè)置狀態(tài)碼:

          帶你深入了解HTTP模塊
          帶你深入了解HTTP模塊

          1.4.3 response-響應(yīng) header

          返回頭部信息,主要有兩種方式:

          • res.setHeader:一次寫入一個(gè)頭部信息;
          • res.writeHead:同時(shí)寫入header和status
            帶你深入了解HTTP模塊
            帶你深入了解HTTP模塊

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)