当前位置: 首页 > news >正文

nodejs里面的 http 模块介绍和使用

Node.js的HTTP模块是一个核心模块,它提供了很多功能来创建HTTP服务器和发送HTTP请求。

http.Server是一个基于事件的http服务器,内部是由c++实现的,接口是由JavaScript封装。

http.request是一个http客户端工具。 用户向服务器发送数据。

创建HTTP服务器

HTTP是Nodejs的一个内置模块,不需要npm下载就可以直接使用,以下是基本的使用

// 1. 导入 http 模块
const http = require('http')// 2. 创建 web 服务器实例
const server = http.createServer()// 3. 为服务器实例绑定 request 事件,监听客户端的请求
server.on('request', function (req, res) {console.log('访问服务器成功')
})// 4. 启动服务器
server.listen(8080, function () {  console.log('running……')
})
req 请求对象

服务器接收到客户端的请求,就会调用通过 server.on() 为服务器绑定的 request 事件处理程序,如果想在事件处理程序中,访问与客户端相关的数据和属性,可以使用如下方式:

server.on('request', function (req, res) {// req 是请求对象,它包含了与客户端相关的数据和属性// req.url 获取客户端请求的 url 地址// req.method 获取客户端请求的类型const str = `${req.url} -- ${req.method}`console.log(str)
})
res 响应对象

在服务器的 request 事件处理程序中,如果想访问与服务器相关的数据和属性,可以使用如下方式

server.on('request', function (req, res) {// res 是响应对象,它包含了与服务器相关的数据和属性// 例如:将字符串发送到客户端const str = `${req.url} -- ${req.method}`// res.end() 方法的作用// 向客户端发送指定的内容,并结束这次请求的处理过程res.end(str)
})

解决中文乱码问题
当调用 res.end() 方法,向客户端发送中文内容的时候,会出现乱码问题,此时,需要手动设置内容的编码格式:

server.on('request', function (req, res) {// 发送包含中文的内容const str = `您请求的 url 地址是:${req.url},请求的 method 类型是:${req.method}`// 为了防止中文乱码问题,需要设置响应头,res.setHeader('Content-Type', 'text/html; charset=utf-8')// 把包含中文的内容返回给客户端res.end(str)
})

发送HTTP请求

var http = require('http');var options = {hostname: 'www.google.com',port: 80,path: '/search?q=nodejs',method: 'GET'
};var req = http.request(options, function(res) {res.setEncoding('utf8');res.on('data', function (chunk) {console.log("body: " + chunk);});
});req.on('error', function(e) {console.log('problem with request: ' + e.message);
});// close the request
req.end();

在上面的代码中,我们创建了一个HTTP请求,然后发送到了Google的服务器。我们设置了请求的选项,包括hostname、port、path和method。然后我们监听了返回的数据,并把返回的内容打印到控制台。

以上就是Node.js的HTTP模块的基本使用。这个模块提供了很多其他的功能,比如HTTPS、流等,但基本的使用方法就像上面展示的那样。

http://www.lryc.cn/news/347802.html

相关文章:

  • MVC框架简易实现【精细】
  • Java入门基础学习笔记18——赋值运算符
  • csv 可视化 python代码
  • HashMap 和 Hashtable区别的底层原理
  • 代码随想录35期Day32-Java
  • ROS 2边学边练(45)-- 构建一个能动的机器人模型
  • 【第66例】IPD体系进阶:华为IPD发展历程
  • websevere服务器从零搭建到上线(四)|muduo网络库的基本原理和使用
  • C语言笔记10
  • BMS-HiL主要功能
  • idea无法识别加载pom.xml文件
  • C语言笔记12
  • 说一下 hibernate 的缓存机制?
  • Mac安装jadx
  • 风扇开启执行逻辑
  • 调用函数实现数组的输入排序插入与输出
  • 代码随想录算法训练营Day 41| 动态规划part03 | 343. 整数拆分、96.不同的二叉搜索树
  • 多模态产品在智能文档处理应用的展望------以TextIn模型为例
  • 上海市计算机学会竞赛平台2024年3月月赛丙组最近的数字
  • RFID在汽车制造中的应用如何改变行业
  • sCrypt受邀在中国人民大学举办《区块链与数字经济》课程讲座
  • pc端的鼠标箭头变换
  • ICode国际青少年编程竞赛- Python-2级训练场-for循环练习2
  • RiPro主题美化【支付弹窗底部提示语根据入口不同有不同的提示】ritheme主题美化RiProV2 增加支付提示语,按支付类型不同,入口不同提示语不同的设置
  • MSMQ消息队列
  • 树莓派nmap扫描
  • 【必看】Spring系列面试题
  • wordpress增加谷歌分析
  • linux的信号量的使用
  • C--贪吃蛇