偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

用 Nodejs 實(shí)現(xiàn) Http 服務(wù)版本的 Hello world

開發(fā) 前端
Nodejs 提供了 Http 模塊,可以讓我們比較便捷地創(chuàng)建 Http 服務(wù),但因?yàn)樯婕暗降念惡?API 也比較多,所以實(shí)際上更多會(huì)使用封裝后的Web 框架,比如 Express、Nestjs。

大家好,我是前端西瓜哥,今天我們來學(xué)習(xí) nodejs,用 nodejs 寫一個(gè)簡單 http 服務(wù)版本的 "hello world"。

http.createServer

我們需要用到 nodejs 的 http 模塊。

http 模塊包含了和 http 相關(guān)的一些方法,我們需要用到 http.createServer 方法,它用于創(chuàng)建一個(gè) http 服務(wù),并返回 http.Server 實(shí)例對(duì)象。

http.createServer 方法接受兩個(gè)參數(shù):

  1. 配置對(duì)象 options,可選。比如可以配置請(qǐng)求超時(shí)時(shí)間 requestTimeout。
  2. 監(jiān)聽請(qǐng)求函數(shù),可選。當(dāng)接收到請(qǐng)求時(shí),我們可以通過該函數(shù)拿到請(qǐng)求對(duì)象 req 和響應(yīng)對(duì)象 res。req 是http.IncomingMessage 實(shí)例對(duì)象,res 則是 http.ServerResponse 實(shí)例對(duì)象, http.ServerResponse  繼承自 http.OutgoingMessage 類。

然后返回一個(gè) http.Server 實(shí)例對(duì)象,http.Server 繼承自 net.Server。

http 模塊涉及相當(dāng)多的類,需要注意區(qū)分。

const http = require('http');

const server = http.createServer((req, res) => {
// ...
})

對(duì)于 req 請(qǐng)求對(duì)象,我們可以拿到請(qǐng)求內(nèi)容,比如:

  • req.headers :對(duì)象形式的請(qǐng)求頭字段(key 會(huì)轉(zhuǎn)換為小寫)。
  • req.method:請(qǐng)求方法,如 "Get"。

對(duì)于 res 響應(yīng)對(duì)象,我們可以通過它來設(shè)置響應(yīng)信息,比如:

  • res.writeHead:writeHead 方法用于設(shè)置狀態(tài)碼(如 200)、狀態(tài)消息(如 "OK")以及響應(yīng)頭字段。主要注意的是,有些頭字段是 nodejs 自己加的,比如 date。
  • res.setHeader:設(shè)置單個(gè)響應(yīng)頭字段,但必須在 res.writeHead 前執(zhí)行。
  • res.getHeaders:返回最終設(shè)置出來的響應(yīng)頭對(duì)象,可用于調(diào)試。
  • res.write:設(shè)置響應(yīng)體內(nèi)容、編碼類型,可以多次調(diào)用,新內(nèi)容會(huì)接到末尾。
  • res.end:該方法表示響應(yīng)頭和請(qǐng)求體已經(jīng)設(shè)置完成,響應(yīng)就會(huì)發(fā)出去,這個(gè)方法是必須要調(diào)用的。可以傳入內(nèi)容參數(shù)設(shè)置響應(yīng)體,相當(dāng)于順手再做了一下 res.write 的工作。

然后是 http.createServer 返回的  http.Server 實(shí)例對(duì)象。它用于控制了這個(gè)特定 http 服務(wù),比如:

  • server.close :該方法可以關(guān)閉當(dāng)前 http 服務(wù)。具體是先不再接受新的請(qǐng)求,然后正在處理的請(qǐng)求都處理完后,才真正關(guān)閉,并觸發(fā)  close 事件。
  • server.listen:監(jiān)聽請(qǐng)求連接,常見的用法是指定一個(gè)端口號(hào)。

Hello World!

現(xiàn)在我們來實(shí)現(xiàn)一個(gè)會(huì)返回 Hello World! 的 http 服務(wù)。

const http = require('http');

http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World!\n');
}).listen(3200);

很簡單。我們先用 http.createServer 創(chuàng)建一個(gè) http 服務(wù)。

傳入一個(gè)請(qǐng)求函數(shù),這個(gè)函數(shù)會(huì)在發(fā)生請(qǐng)求時(shí)拿到 res 響應(yīng)對(duì)象,然后使用 res.writeHead 設(shè)置狀態(tài)碼 200,以及必要的頭字段。

我們返回的數(shù)據(jù)是純文本類型,所以設(shè)置 Content-Type 為 'text/plain'。這個(gè)需要根據(jù)你自己的需求選擇 MIME,比如 HTML 用 text/html。

然后用 res.end 表示設(shè)置完成,并帶上 'Hello World!\n' 作為請(qǐng)求體。

最后我們給 http.createServer 方法返回的對(duì)象執(zhí)行 listen 方法,監(jiān)聽 3200 端口。

然后我們?cè)L問 http://localhost:3200/,就能看到 Hello World! 了。

結(jié)尾

Nodejs 提供了 http 模塊,可以讓我們比較便捷地創(chuàng)建 http 服務(wù),但因?yàn)樯婕暗降念惡?API 也比較多,所以實(shí)際上更多會(huì)使用封裝后的Web 框架,比如 Express、Nestjs。

責(zé)任編輯:姜華 來源: 前端西瓜哥
相關(guān)推薦

2014-12-19 10:07:10

C

2017-11-23 17:45:46

Yii框架IntelYii框架深度剖析

2020-03-25 14:40:45

語言編程語言Hello

2009-09-28 14:49:08

Spring DMOSGi服務(wù)

2009-07-30 13:21:17

Scala入門Hello World

2009-08-11 10:32:23

什么是Groovy

2023-01-06 08:18:44

2009-09-16 17:15:19

OSGi Bundle

2023-09-04 07:30:03

Wasm匯編語言

2011-06-08 14:39:06

Qt 教程

2012-02-20 14:26:48

JavaPlay Framew

2017-06-26 08:55:52

2015-10-27 09:47:11

2023-05-23 08:01:10

Netty網(wǎng)絡(luò)通信

2009-08-14 16:54:19

C# Hello Wo

2021-11-26 08:22:01

Java動(dòng)態(tài)開發(fā)

2011-08-05 09:48:46

iPhone Interface

2024-04-11 13:13:27

2014-04-11 11:36:42

NDKAndroid開發(fā)終端

2017-01-09 16:40:07

React NatiAndroid 開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)