首頁  >  文章  >  web前端  >  聊聊Node.js中的http模組

聊聊Node.js中的http模組

青灯夜游
青灯夜游轉載
2022-08-12 20:22:301543瀏覽

這篇文章給大家了解一下Node中的http模組,聊聊怎麼使用http模組建立伺服器,希望對大家有幫助!

聊聊Node.js中的http模組

1、什麼是http

#在百度百科的解釋:

超文本傳輸協定(Hyper Text Transfer Protocol,HTTP)是一個簡單的請求-回應協議,它通常運行在TCP之上。它指定了客戶端可能發送給伺服器什麼樣的訊息以及得到什麼樣的回應。請求和回應訊息的頭以ASCII形式給出;而 [9]  訊息內容則具有類似MIME的格式。這個簡單模型是早期Web成功的有功之臣,因為它使開發和部署非常直截了當。

如果學過JavaSE基礎的,應該對網路程式設計很熟悉

當然沒學過也沒事,且聽良心作者我為您娓娓道來:

#1.1、網路通訊協定

在2022年的今天,電腦網路已經成為了人們日常生活的必需品,無論是郵件、與朋友聊天的即時通訊、短視頻娛樂·······可以說,我們透過電腦網路可以使得多台電腦實現連接。

電腦網路透過傳輸媒體、通訊設施、和網路通訊協議,把在一個網路下的多個電腦設備連接起來,實現了資源共享和資料傳輸。

但是在同一個網路的電腦進行連接和通訊的時候,必要遵守一定的規則,在電腦網路中,這些連接和通訊的規則叫做網路通訊協定:

聊聊Node.js中的http模組

#我們這裡講到的http協定就是基於tcp實現的。常見的http應用程式場景就是 你在瀏覽器輸入一串位址,然後回到過來一個網頁。

1.2、IP位址和連接埠號碼

#要使得網路中的電腦能夠進行通信,還必須為每台電腦指定一個識別號,透過這個識別號來指定接收資料的電腦或指定發送資料的電腦。

查看自己的電腦在區域網路的ip位址在windows電腦中按WIN R鍵盤輸入cmd快速進入控制台

ipconfig

聊聊Node.js中的http模組

透過IP位址可以連接到指定的計算機,但如果想存取目標計算機中你的某個應用程序,還需要指定連接埠號碼。

例如MySQL的3306、TomCat的8080

#2、使用http模組建立伺服器

聊聊Node.js中的http模組

Node.js 提供了http 模組,http 模組主要用於搭建HTTP 服務端和客戶端,使用HTTP 伺服器或客戶端功能必須呼叫http 模組。

2.1、厚積(細講,詳細介紹用到的物件方法,整個http服務建置流程)

流程簡介:

  • 先用createServer()方法註冊server對象,

  • 然後用這個server對象去呼叫on()方法監聽處理事件,

  • 呼叫listen()方法去綁定連接埠號碼

#開始淺嚐:

任何網路服務應用程式總是要先建立一個服務對象。在nodeJS中我們可以使用createServer方法來實現,

// 首先导入http模块
const http = require('http'); 
// 创建http服务对象
const server = http.createServer();

由 createServer 構造函數傳回的 Server物件是一個事件發射器,在這裡用創建好的server物件利用他自帶的on()方法對它進行事件監聽處理。這樣,每當有http請求發送過來,我們就可以進行處理了。

// 首先导入http模块
const http = require('http'); 
// 创建http服务对象
const server = http.createServer();
// 绑定事件监听
server.on('request', (request, response) => { 
// 永远相信美好的事情即将发生! 
});

我們前面介紹過(IP位址連接埠),其中IP位址在我們電腦聯網的時候,路由器就會自動DHCP分配給我們,但要想存取電腦上指定的程式還必須有連接埠號。

為了存取電腦上的指定程序,我們還要用到listen()方法。你只需要用server.listen()把連接埠號碼當作參數傳入 listen 方法中,作為監聽埠即可。

// 首先导入http模块
const http = require('http'); 
// 创建http服务对象
const server = http.createServer();
// 绑定事件监听
server.on('request', (req, res) => {  
// 此函数内容只是小小调用一下res参数让程序更加易懂的跑起来
    // 编写响应头(不写浏览器不识别)
    res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
    // 发送响应数据
    res.end("

欢迎使用node.js搭建服务

");  }); // 绑定端口号 server.listen(8888); // 控制台打印地址,方便快速调试 console.log('您的http服务启动在  http://127.0.0.1:8888/');

程式碼運行演示:

聊聊Node.js中的http模組

上述代码演示十分细节,但是实际开发起来,不建议这样一步步写,过于繁琐了

接下来跟着作者,让我们继续优化一下代码,让代码更加牛逼且简洁

2.2、薄发(极简才是王道,优雅!太优雅了!!!)

一步一步注册对象,调各种方法的流程太过繁琐,这里我们用小而美的做法,一步踏天,实现一个http接口:

const http = require('http'); 
const server = http.createServer(function(req,res){ 
  // 永远相信美好的事情即将发生
}).listen(8080);

每当有 HTTP 请求到达服务器时,createServer 中传入的函数就被自动执行。所以这个函数也被称为是请求处理函数。我们可以直接在里面传入事件监听的回调函数,然后后面点上listen()方法,直接绑定端口号。

但是这样还不够好,是的,还可以更好,把上面回调函数用箭头函数修饰一下,更加美观。

const http = require('http'); 
const server = http.createServer((req,res) => { 
  // 永远相信美好的事情即将发生
}).listen(8080);

当然

还不够好

聊聊Node.js中的http模組

还可以更好!

直接一个createServer()解决一切:

var http = require('http')

// 创建服务器
http.createServer( (req, res) =>{  
    // 永远相信美好的事情即将发送
 }).listen(8888);

聊聊Node.js中的http模組

看到这里,恭喜你已经入门了nodeJS的http模块 此时此刻的你 已经掌握了如下技能

  • 实例化一个 HTTP 服务,绑定一个处理请求的函数,并对某个特定端口进行监听。

请继续关注作者,接下来 我们将学习

  • request 中获取请求头,访问路径,方法以及消息体。
  • response 象发送响应头,HTTP 状态码以及消息体。
  • server.on()的相关参数 进行错误、超时、连接·····等等情况的处理

更多node相关知识,请访问:nodejs 教程

以上是聊聊Node.js中的http模組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除