搜尋
首頁web前端js教程一文帶你了解Node.js中的http模組
一文帶你了解Node.js中的http模組Jan 05, 2023 pm 08:31 PM
nodejs​nodehttp模組

本篇文章給大家了解Node.js 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 模組。 【相關教學推薦:nodejs影片教學程式設計教學

#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("<h1 id="欢迎使用node-js搭建服务">欢迎使用node.js搭建服务</h1>"); 
});
// 绑定端口号
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中文網其他相關文章!

陳述
本文轉載於:掘金社区。如有侵權,請聯絡admin@php.cn刪除
Node.js各版本间有什么区别?如何选择合适的版本?Node.js各版本间有什么区别?如何选择合适的版本?Aug 01, 2022 pm 08:00 PM

Node.js 有 LTS 版本和 Current 版本,这两种版本有什么区别?下面本篇文章带大家快速掌握 Node.js 版本的区别,并聊聊如何选择合适的版本,希望对大家有所帮助!

聊聊使用Node如何实现轻量化进程池和线程池聊聊使用Node如何实现轻量化进程池和线程池Oct 14, 2022 pm 08:05 PM

Node.js 的是一门单线程的语言,它基于 V8 引擎开发,v8 在设计之初是在浏览器端对 JavaScript 语言的解析运行引擎,其最大的特点是单线程,这样的设计避免了一些多线程状态同步问题,使得其更轻量化易上手。

Node.js如何进行版本管理?3款实用版本管理工具分享Node.js如何进行版本管理?3款实用版本管理工具分享Aug 10, 2022 pm 08:20 PM

Node.js如何进行版本管理?下面本篇文章给大家整理分享3 款非常实用的 Node.js 版本管理工具,希望对大家有所帮助!

IDEA中怎么配置安装node.js?方法浅析IDEA中怎么配置安装node.js?方法浅析Dec 21, 2022 pm 08:28 PM

IDEA中怎么运行node?下面本篇文章给大家介绍一下IDEA中配置安装并运行node.js的方法,希望对大家有所帮助!

一文带你了解npm的原理一文带你了解npm的原理Aug 09, 2022 am 09:23 AM

npm 是 JavaScript世界的包管理工具,并且是 Node.js​平台的默认包管理工具。通过 npm可以安装、共享、分发代码,管理项目依赖关系。本篇文章带大家了解一下npm的原理,希望对大家有所帮助!

node爬取数据实例:抓取宝可梦图鉴并生成Excel文件node爬取数据实例:抓取宝可梦图鉴并生成Excel文件Aug 26, 2022 pm 08:31 PM

怎么用Node.js爬取网页的数据并写入Excel文件?下面本篇文章通过一个实例来讲解一下用Node.js爬取网页的数据并生成Excel文件的方法,希望对大家有所帮助!

聊聊Node.js path模块中的常用工具函数聊聊Node.js path模块中的常用工具函数Jun 08, 2022 pm 05:37 PM

本篇文章带大家聊聊Node.js中的path模块,介绍一下path的常见使用场景、执行机制,以及常用工具函数,希望对大家有所帮助!

看看怎么使用nodejs生成二维码看看怎么使用nodejs生成二维码Oct 25, 2022 am 09:28 AM

​二维码在生活中无处不在,之前我也使用过java的zxing库生成过二维码,功能很强大。但是其实nodejs上也有很多第三方库能够生成二维码。今天我们就是使用qrcode这个库来生成二维码。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),