最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js中的?http?模塊實戰(zhàn)舉例

 更新時間:2025年09月19日 10:34:22   作者:艾光遠  
Node.js的http模塊是核心工具,用于創(chuàng)建HTTP服務(wù)器和客戶端,處理請求響應(yīng),支持HTTP/1.1協(xié)議,提供createServer、request等方法,是構(gòu)建Web應(yīng)用的基礎(chǔ),也可結(jié)合實現(xiàn)WebSocket協(xié)議,本文給大家介紹Node.js中的http模塊的相關(guān)知識,感興趣的朋友一起看看吧

Node.js 的 http 模塊是 Node.js 內(nèi)置的核心模塊之一,它允許開發(fā)者創(chuàng)建 HTTP 服務(wù)器和客戶端。通過這個模塊,我們可以輕松地處理 HTTP 請求和響應(yīng),構(gòu)建 Web 應(yīng)用程序或 API 服務(wù)。

http 模塊提供了創(chuàng)建服務(wù)器和發(fā)起 HTTP 請求的能力,是構(gòu)建 Web 應(yīng)用的基礎(chǔ)。它支持 HTTP/1.1 協(xié)議,并提供了豐富的 API 來處理各種 HTTP 相關(guān)的操作。

http 模塊是 Node.js 中的核心模塊之一,專門用于構(gòu)建基于 HTTP 的網(wǎng)絡(luò)應(yīng)用程序。它允許創(chuàng)建 HTTP 服務(wù)器和客戶端,處理網(wǎng)絡(luò)請求和響應(yīng)。

1. 核心 API 詳解

1.1. http.createServer([options][, requestListener])

用于創(chuàng)建 HTTP 服務(wù)器的核心方法,返回一個 http.Server 實例,可監(jiān)聽指定端口并處理請求。

  • options(可選):用于提供服務(wù)器配置,允許指定 HTTP/1.1、HTTP/2 等協(xié)議。
  • requestListener(可選):一個回調(diào)函數(shù),在每次接收到客戶端請求時調(diào)用。
const http = require('http');
const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, world!\n');
});
server.listen(3000, '127.0.0.1', () => {
  console.log('Server running at http://127.0.0.1:3000/');
});
  • req:包含請求的詳細信息,比如 URL、HTTP 方法、請求頭等。
  • res:用于響應(yīng)客戶端請求,可以設(shè)置狀態(tài)碼、響應(yīng)頭以及響應(yīng)體。

1.2.request and response Objects

1. http.IncomingMessage

表示服務(wù)器接收到的請求,是一個可讀流,用于獲取請求體和元數(shù)據(jù)。

常用屬性:

  • req.method:請求的方法。
  • req.url:請求的路徑和查詢參數(shù)。
  • req.headers:請求的頭部信息。

2. http.ServerResponse

表示服務(wù)器對客戶端的響應(yīng),是一個可寫流,用于發(fā)送響應(yīng)數(shù)據(jù)。

常用方法:

  • res.writeHead(statusCode[, headers]):設(shè)置狀態(tài)碼和頭部信息。
  • res.end([data[, encoding]][, callback]):結(jié)束響應(yīng)并可以發(fā)送數(shù)據(jù)。

1.3. http.request(options[, callback])

用于創(chuàng)建 HTTP 客戶端請求。

const options = {
  hostname: 'www.google.com',
  port: 80,
  path: '/',
  method: 'GET',
};
const req = http.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => {
    data += chunk;
  });
  res.on('end', () => {
    console.log(data);
  });
});
req.on('error', (e) => {
  console.error(`Problem with request: ${e.message}`);
});
req.end();
  • options:用于配置請求的目標、方法、頭信息等。
  • callback:處理響應(yīng)的回調(diào)函數(shù)。

1.4.http.get(options[, callback])

這是一個簡化版的 http.request,專門用于 GET 請求,自動調(diào)用 req.end(),不需要顯式調(diào)用。

http.get('http://www.google.com', (res) => {
  res.on('data', (chunk) => {
    console.log(`Data chunk: ${chunk}`);
  });
  res.on('end', () => {
    console.log('No more data.');
  });
});

2. 實戰(zhàn)項目:簡單的 HTTP 服務(wù)器與客戶端

創(chuàng)建一個簡單的 HTTP 服務(wù)器,它可以響應(yīng)客戶端的 GET 和 POST 請求。同時,通過客戶端請求獲取服務(wù)器上的數(shù)據(jù)。

2.1.創(chuàng)建 HTTP 服務(wù)器

在服務(wù)器端,接受 GET 和 POST 請求,并返回不同的響應(yīng)。

const http = require('http');
const server = http.createServer((req, res) => {
  if (req.method === 'GET' && req.url === '/') {
    res.writeHead(200, { 'Content-Type': 'application/json' });
    res.end(JSON.stringify({ message: 'Welcome to the GET request!' }));
  } else if (req.method === 'POST' && req.url === '/submit') {
    let body = '';
    req.on('data', (chunk) => {
      body += chunk.toString();
    });
    req.on('end', () => {
      res.writeHead(200, { 'Content-Type': 'application/json' });
      res.end(JSON.stringify({ message: 'Data received!', data: body }));
    });
  } else {
    res.writeHead(404, { 'Content-Type': 'text/plain' });
    res.end('404 Not Found');
  }
});
server.listen(3000, () => {
  console.log('Server listening on port 3000');
});

2.2.創(chuàng)建 HTTP 客戶端

客戶端將發(fā)送 GET 和 POST 請求來與服務(wù)器進行交互。

const http = require('http');
// Send GET request
http.get('http://localhost:3000', (res) => {
  let data = '';
  res.on('data', (chunk) => {
    data += chunk;
  });
  res.on('end', () => {
    console.log('GET Response:', data);
  });
});
// Send POST request
const postData = JSON.stringify({ name: 'John', age: 30 });
const options = {
  hostname: 'localhost',
  port: 3000,
  path: '/submit',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': postData.length,
  },
};
const req = http.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => {
    data += chunk;
  });
  res.on('end', () => {
    console.log('POST Response:', data);
  });
});
req.write(postData);
req.end();

通過 http 模塊直接實現(xiàn) WebSocket (WS) 協(xié)議是一項深入底層協(xié)議的工作。WebSocket 是基于 TCP 的協(xié)議,在其通信過程中,依賴于 HTTP 協(xié)議的握手機制,但通信方式和 HTTP 不同,它允許建立一個長期的、雙向的連接。為了實現(xiàn) WebSocket 服務(wù)器,需要結(jié)合對 HTTP 和 WebSocket 握手機制、數(shù)據(jù)幀協(xié)議以及 TCP/IP 模型的理解。

到此這篇關(guān)于Node.js中的 http 模塊詳解的文章就介紹到這了,更多相關(guān)node.js http模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • nodejs搭建本地服務(wù)器并訪問文件的方法

    nodejs搭建本地服務(wù)器并訪問文件的方法

    本篇文章主要介紹了nodejs搭建本地服務(wù)器并訪問文件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • 淺談node.js中間件有哪些類型

    淺談node.js中間件有哪些類型

    這篇文章主要介紹了node.js中間件有哪些類型,對中間件感興趣的同學,可以參考下
    2021-04-04
  • 深入了解 Node的多進程服務(wù)實現(xiàn)

    深入了解 Node的多進程服務(wù)實現(xiàn)

    本文主要介紹了Node的多進程服務(wù)實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • 深入探究node之Transform

    深入探究node之Transform

    這篇文章主要介紹了深入探究node之Transform,本文深入內(nèi)部闡述Transform的運行機理及使用技巧,有興趣的可以了解一下
    2017-07-07
  • NodeJS使用formidable實現(xiàn)文件上傳

    NodeJS使用formidable實現(xiàn)文件上傳

    這篇文章主要為大家詳細介紹了NodeJS使用formidable實現(xiàn)文件上傳的相關(guān)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • node.js如何自定義實現(xiàn)一個EventEmitter

    node.js如何自定義實現(xiàn)一個EventEmitter

    我們了解到,Node采用了事件驅(qū)動機制,而EventEmitter就是Node實現(xiàn)事件驅(qū)動的基礎(chǔ),本文主要介紹了node.js自定義實現(xiàn)EventEmitter,感興趣的可以了解一下
    2021-07-07
  • NodeJS通過魔術(shù)封包喚醒局域網(wǎng)計算機實例

    NodeJS通過魔術(shù)封包喚醒局域網(wǎng)計算機實例

    這篇文章主要為大家介紹了NodeJS通過魔術(shù)封包喚醒局域網(wǎng)計算機代碼實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • node.js使用cluster實現(xiàn)多進程

    node.js使用cluster實現(xiàn)多進程

    本文給大家詳細介紹了nodejs使用cluster模塊實現(xiàn)多進程的方法和步奏,非常的細致全面,有需要的小伙伴可以參考下
    2016-03-03
  • 使用Node.js配合Nginx實現(xiàn)高負載網(wǎng)絡(luò)

    使用Node.js配合Nginx實現(xiàn)高負載網(wǎng)絡(luò)

    這篇文章主要介紹了使用Node.js配合Nginx實現(xiàn)高負載網(wǎng)絡(luò),Node的異步加上Nginx的反向代理在性能上實在是給力!需要的朋友可以參考下
    2015-06-06
  • express默認日志組件morgan的方法

    express默認日志組件morgan的方法

    morgan是express默認的日志中間件,這篇文章主要介紹了express默認日志組件morgan的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04

最新評論

上栗县| 云浮市| 宝坻区| 麦盖提县| 威远县| 宾阳县| 固阳县| 安远县| 微博| 凌源市| 凉城县| 应城市| 聊城市| 锡林浩特市| 杭锦旗| 庐江县| 建宁县| 治县。| 衡南县| 宜宾县| 淳安县| 合阳县| 沅江市| 台北县| 浦江县| 砀山县| 柏乡县| 且末县| 苍南县| 南昌市| 宜阳县| 疏附县| 怀柔区| 蒙自县| 临沧市| 兰考县| 曲麻莱县| 武夷山市| 和政县| 长顺县| 晋州市|