搜尋
首頁web前端js教程聊聊Node.js中的http模組
聊聊Node.js中的http模組Aug 12, 2022 pm 08:22 PM
nodejsnodehttp模組

這篇文章給大家了解一下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("<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刪除
Vercel是什么?怎么部署Node服务?Vercel是什么?怎么部署Node服务?May 07, 2022 pm 09:34 PM

Vercel是什么?本篇文章带大家了解一下Vercel,并介绍一下在Vercel中部署 Node 服务的方法,希望对大家有所帮助!

node.js gm是什么node.js gm是什么Jul 12, 2022 pm 06:28 PM

gm是基于node.js的图片处理插件,它封装了图片处理工具GraphicsMagick(GM)和ImageMagick(IM),可使用spawn的方式调用。gm插件不是node默认安装的,需执行“npm install gm -S”进行安装才可使用。

火了!新的JavaScript运行时:Bun,性能完爆Node火了!新的JavaScript运行时:Bun,性能完爆NodeJul 15, 2022 pm 02:03 PM

今天跟大家介绍一个最新开源的 javaScript 运行时:Bun.js。比 Node.js 快三倍,新 JavaScript 运行时 Bun 火了!

nodejs中lts是什么意思nodejs中lts是什么意思Jun 29, 2022 pm 03:30 PM

在nodejs中,lts是长期支持的意思,是“Long Time Support”的缩写;Node有奇数版本和偶数版本两条发布流程线,当一个奇数版本发布后,最近的一个偶数版本会立即进入LTS维护计划,一直持续18个月,在之后会有12个月的延长维护期,lts期间可以支持“bug fix”变更。

node爬取数据实例:聊聊怎么抓取小说章节node爬取数据实例:聊聊怎么抓取小说章节May 02, 2022 am 10:00 AM

node怎么爬取数据?下面本篇文章给大家分享一个node爬虫实例,聊聊利用node抓取小说章节的方法,希望对大家有所帮助!

深入浅析Nodejs中的net模块深入浅析Nodejs中的net模块Apr 11, 2022 pm 08:40 PM

本篇文章带大家带大家了解一下Nodejs中的net模块,希望对大家有所帮助!

怎么获取Node性能监控指标?获取方法分享怎么获取Node性能监控指标?获取方法分享Apr 19, 2022 pm 09:25 PM

怎么获取Node性能监控指标?本篇文章来和大家聊聊Node性能监控指标获取方法,希望对大家有所帮助!

什么是单点登录?怎么使用Nodejs实现SSO什么是单点登录?怎么使用Nodejs实现SSOApr 22, 2022 pm 09:13 PM

什么是单点登录?下面本篇文章给大家给大家介绍一下单点登录原理,聊聊使用Nodejs实现单点登录SSO的方法,希望对大家有所帮助!

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.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

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

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器