一文带你了解Node.js中的http模块

本篇文章给大家了解一下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("

欢迎使用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模块的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2696892.html

(0)
上一篇 2025年3月7日 18:36:42
下一篇 2025年3月7日 18:36:50

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Node实战学习:浏览器预览项目所有图片

    在前端实际项目开发中,会有这样一种场景。每次引入新的图片,并不知道这个资源是否被引用过,所以会点开存放图片的资源一个个去看。实际问题是: 1.图片并不是放到一个目录下的,可能存在任何的地方,不好查找 2.费时间,费力 3.可能会重复引入图片…

    2025年3月7日
    200
  • 聊聊Node.js中怎么用async函数

    借助于新版 V8 引擎,Node.js 从 7.6 开始支持 async 函数特性。今年 10 月 31 日,Node.js 8 也开始成为新的长期支持版本,因此你完全可以放心大胆地在你的代码中使用 async 函数了。在这边文章里,我会简…

    2025年3月7日
    200
  • 一文带你了解node中的的模块系统

    本篇文章带大家进行node学习,深入浅出的了解node中的的模块系统,希望对大家有所帮助! 两年前写过一篇文章介绍模块系统:理解前端模块概念:CommonJs与ES6Module。这篇文章的知识面都是针对刚入门的,比较浅显。在这也纠正文章的…

    2025年3月7日 编程技术
    200
  • 一文详解Node中express的身份认证

    本篇文章带大家了解node中的express框架,介绍一下express中的身份认证,希望对大家有所帮助! Web开发模式 目前主流的Web开发模式有两种: 基于服务端渲染的传统Web开发模式 服务端渲染的概念:服务器发送给客户端的HTML…

    2025年3月7日 编程技术
    200
  • 一文浅析node中如何使用消息队列

    什么是消息队列?下面本篇文章带大家了解一下消息队列的基本概念,介绍一下node中如何使用消息队列,希望对大家有所帮助! 1.消息队列 什么是消息队列 消息队列就是消息的传输过程中保存消息的容器,本质是一个队列(先进先出) 消息指的是需要传输…

    2025年3月7日 编程技术
    200
  • 一文聊聊node后端路由自动加载

    本文适宜人群 有一定基础的Node.js开发人员 难易程度 中等 背景 今天来谈谈node后端中路由的问题。【相关教程推荐:nodejs视频教程】 我们前端同学或者是nodejs服务端的同学,在你们使用express和koajs写接口的时候…

    2025年3月7日 编程技术
    200
  • 浅析JS的异步函数async/await

    本篇文章带大家了解一下javascript的异步函数 async/await,希望对大家有所帮助! ES7 引入的 async/await 是对 JavaScript 异步编程的一种改进,它提供了使用同步样式代码异步访问资源的选项,而不会阻…

    2025年3月7日
    200
  • 一文详解如何在前端中动态生成API接口

    本篇文章给大家带来了关于前端的相关知识,其中主要介绍了怎么在前端中动态的生成api接口 ,下面一起来看一下,希望对大家有帮助。 在ts横行的时代,接口请求和返回参数定义类型成了繁琐的一件事情,在这样的情况下,我们可以通过node服务,来进行…

    2025年3月7日 编程技术
    200
  • 手把手带你开发一个node切换源小工具

    node怎么切换源?下面本篇文章带大家手搓一个node切换源小工具,希望对大家有所帮助! 嗨嗨嗨,又到了写轮子环节了,为什么要写这个东西呢? 应为npm自带的源下载东西灰常慢 目前已经有一款工具了nrm 也是做切换源的 例如tabao源,腾…

    2025年3月7日 编程技术
    200
  • 【整理分享】判断当前使用哪种npm包管理器的方法

    如何判断当前的 npm 包管理器?下面本篇文章给大家整理分享判断当前使用哪种npm包管理器的方法,希望对大家有所帮助 使用 npm 进行依赖安装比较常见。但随着项目体积、数量增加,npm 就会出现安装速度慢,体积过大的问题。使用 yarn …

    2025年3月7日
    200

发表回复

登录后才能评论