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、流等,但基本的使用方法就像上面展示的那样。
相关文章:

nodejs里面的 http 模块介绍和使用
Node.js的HTTP模块是一个核心模块,它提供了很多功能来创建HTTP服务器和发送HTTP请求。 http.Server是一个基于事件的http服务器,内部是由c实现的,接口是由JavaScript封装。 http.request是一个http客户端工具。 用户向服务器发送数据。 创…...

MVC框架简易实现【精细】
目录 mvc 的架构 MVC 框架 传统web开发的弊端 1.创建一个maven项目 2.添加maven依赖 3.创建TomCatService类 3.1 创建TomcatService类 3.2 TomcatService类讲解 3.3 安装项目到本地仓库,给其他项目使用 4.测试启动Tomcat 4.1 创建一个新的maven项目 4.2 引用…...

Java入门基础学习笔记18——赋值运算符
赋值运算符: 就是“”,就是给变量赋值的,从右边往左边看。 int a 10; // 把数据赋值给左边的变量a存储。 扩展赋值运算符: 注意:扩展的赋值运算符隐含了强制类型转换。 package cn.ensource.operator;public class…...
csv 可视化 python代码
excel查看csv后,csv就被锁定了,不能修改,用pyqt写一个csv查看工具,拖拽查看,非常方便 目录 第2版,提升加载速度 选中单元格统计个数,求和,平均值...
HashMap 和 Hashtable区别的底层原理
一、容器键值对: 1.HashMap 的 key 和 value 都允许为 null , HashMap 在 key 为 null 的时候,值必须为null。 2.Hashtable 的 key 和 value 都不允许为 null 。 Hashtable 遇到key或value为 null时 ,将抛出 NullPointerException…...
代码随想录35期Day32-Java
Day32题目 LeetCode122.买股票的最佳时机 核心思想:很简单,只要第二天比第一天贵,就第一天买入,第二天卖出 class Solution {public int maxProfit(int[] prices) {// 只要后一天比这一天价钱高就买,然后第二天卖出…...

ROS 2边学边练(45)-- 构建一个能动的机器人模型
前言 在上篇中我们搭建了一个机器人模型(其由各个关节(joint)和连杆(link)组成),此篇我们会通过设置关节类型来实现机器人的活动。 在ROS中,关节一般有无限旋转(continuous),有限旋转…...
【第66例】IPD体系进阶:华为IPD发展历程
目录 简介 样例 作者简介 简介 想要引入 IPD,首先就要思考一些问题: 跟我的企业适配吗? 流程会不会太重了? 一定要引入吗,有没有其他方式? 从目前大的环境来说。 中国制造业正在由“中国制造”向“中国创造”转变。 这也是企业价值转移的趋势。 宏碁集团创始人施振…...

websevere服务器从零搭建到上线(四)|muduo网络库的基本原理和使用
文章目录 muduo源码编译安装muduo框架讲解muduo库编写服务器代码示例代码解析用户连接的创建和断开回调函数用户读写事件回调 使用vscode编译程序配置c_cpp_properties.json配置tasks.json配置launch.json编译 总结 muduo源码编译安装 muduo依赖Boost库,所以我们应…...
C语言笔记10
1.用指针打印一维数组 //1.用指针打印一维数组 #include <stdio.h> int main() {//int arr[] { 1,2,3,4,5 };int arr[5] { 0 };int* p &arr[0];int sz sizeof(arr) / sizeof(arr[0]);for (int i 0; i < sz; i){scanf("%d", &arr[i]);}//int* …...
BMS-HiL主要功能
BMS HIL 系统中 PC 机中安装实验管理软件用于测试过程管理和测试序列编辑,通过以太网与 PXI 机箱中的处理器进行连接,处理器中运行实时系统(Real Time)并安装 Veristand 终端引擎,通过与 PC 中的数据传输,对…...

idea无法识别加载pom.xml文件
有时idea无法识别加载pom.xml文件,直接打开pom.xml文件,然后添加到maven就行...
C语言笔记12
1.使用qsort函数进行排序 #include <stdio.h> #include <stdlib.h> #include <string.h>//void qsort(void* base, //指向待排序数组的第一个元素的指针 // size_t num, //base指向数组中的元素个数 // size_t size,//base指向的数组中一…...
说一下 hibernate 的缓存机制?
Hibernate 的缓存机制是为了提高应用程序的性能,通过减少对数据库物理数据源的访问频次而设计的。Hibernate 的缓存主要可以分为两个级别:一级缓存(也称为 Session 级别的缓存)和二级缓存(也称为 SessionFactory 级别的…...

Mac安装jadx
1、使用命令brew安装 : brew install jadx 输入完命令,等待安装完毕 备注(关于Homebrew ): Homebrew 是 MacOS 下的包管理工具,类似 apt-get/apt 之于 Linux,yum 之于 CentOS。如果一款软件发布时支持了 homebrew 安…...

风扇开启执行逻辑
执行流程 public static void businessExecutionWork(){//以下为业务逻辑部分System.out.println("1、根据电池包控制风扇服务执行 开始!");//1、获取电池包电压、电流、环境温度//获取电池包电压、电流、环境温度ObtainBatteryDataService obtainBatteryDataServic…...
调用函数实现数组的输入排序插入与输出
输入一串数字,输出排序插入后输出最后的数字序列; 把主要步骤交给主函数,通过调用函数来实现整体的功能: 写出主函数(这里使用冒泡排序): int main(){int n;int a[10];cin>>n;inputa(a…...

代码随想录算法训练营Day 41| 动态规划part03 | 343. 整数拆分、96.不同的二叉搜索树
代码随想录算法训练营Day 41| 动态规划part03 | 343. 整数拆分、96.不同的二叉搜索树 文章目录 代码随想录算法训练营Day 41| 动态规划part03 | 343. 整数拆分、96.不同的二叉搜索树343. 整数拆分一、动态规划二、贪心(不需要掌握) 96.不同的二叉搜索树一…...

多模态产品在智能文档处理应用的展望------以TextIn模型为例
前言发展现状TextIn 文档解析技术文本向量化展望合合信息 前言 第十四届视觉与学习青年学者研讨会(VALSE 2024)于5月5日-7日在山城重庆渝北区悦来国际会议中心举办。大会聚焦计算机视觉、模式识别、多媒体和机器学习等领域的国际前沿和热点方向。大会中,合合信息智能…...
上海市计算机学会竞赛平台2024年3月月赛丙组最近的数字
题目描述 给定两个正整数 𝑛n 与 𝑑d ,请找到所有最接近 𝑛n 且是 𝑑d 的倍数的整数。 输入格式 第一行:单个整数表示 𝑛n第二行:单个整数表示 𝑑d 输出格式 若干行…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...