当前位置: 首页 > 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、流等,但基本的使用方法就像上面展示的那样。

相关文章:

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 机中安装实验管理软件用于测试过程管理和测试序列编辑&#xff0c;通过以太网与 PXI 机箱中的处理器进行连接&#xff0c;处理器中运行实时系统&#xff08;Real Time&#xff09;并安装 Veristand 终端引擎&#xff0c;通过与 PC 中的数据传输&#xff0c;对…...

idea无法识别加载pom.xml文件

有时idea无法识别加载pom.xml文件&#xff0c;直接打开pom.xml文件&#xff0c;然后添加到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 的缓存机制是为了提高应用程序的性能&#xff0c;通过减少对数据库物理数据源的访问频次而设计的。Hibernate 的缓存主要可以分为两个级别&#xff1a;一级缓存&#xff08;也称为 Session 级别的缓存&#xff09;和二级缓存&#xff08;也称为 SessionFactory 级别的…...

Mac安装jadx

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

风扇开启执行逻辑

执行流程 public static void businessExecutionWork(){//以下为业务逻辑部分System.out.println("1、根据电池包控制风扇服务执行 开始!");//1、获取电池包电压、电流、环境温度//获取电池包电压、电流、环境温度ObtainBatteryDataService obtainBatteryDataServic…...

调用函数实现数组的输入排序插入与输出

输入一串数字&#xff0c;输出排序插入后输出最后的数字序列&#xff1b; 把主要步骤交给主函数&#xff0c;通过调用函数来实现整体的功能&#xff1a; 写出主函数&#xff08;这里使用冒泡排序&#xff09;&#xff1a; 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. 整数拆分一、动态规划二、贪心&#xff08;不需要掌握&#xff09; 96.不同的二叉搜索树一…...

多模态产品在智能文档处理应用的展望------以TextIn模型为例

前言发展现状TextIn 文档解析技术文本向量化展望合合信息 前言 第十四届视觉与学习青年学者研讨会(VALSE 2024)于5月5日-7日在山城重庆渝北区悦来国际会议中心举办。大会聚焦计算机视觉、模式识别、多媒体和机器学习等领域的国际前沿和热点方向。大会中&#xff0c;合合信息智能…...

上海市计算机学会竞赛平台2024年3月月赛丙组最近的数字

题目描述 给定两个正整数 &#x1d45b;n 与 &#x1d451;d &#xff0c;请找到所有最接近 &#x1d45b;n 且是 &#x1d451;d 的倍数的整数。 输入格式 第一行&#xff1a;单个整数表示 &#x1d45b;n第二行&#xff1a;单个整数表示 &#x1d451;d 输出格式 若干行…...

Java 26原生HTTP/3实战:QUIC 0-RTT握手,弱网下接口延迟砍半

文章目录引言&#xff1a;当你在地铁里刷不出二维码时&#xff0c;TCP在想什么&#xff1f;HTTP/3和QUIC&#xff1a;从"打电话确认"到"直接敲门送货"TCP的"官僚主义"QUIC的"野路子"Java 26的HTTP/3支持&#xff1a;JEP 517落地等了五…...

Z-Image-Turbo_Sugar脸部Lora效果增强:ControlNet+Lora联合调控Sugar脸部结构

Z-Image-Turbo_Sugar脸部Lora效果增强&#xff1a;ControlNetLora联合调控Sugar脸部结构 想生成那种又纯又欲、甜度爆表的Sugar风格脸部图片吗&#xff1f;是不是经常遇到模型生成的脸型不够精致、五官比例失调&#xff0c;或者风格不够统一的问题&#xff1f;今天&#xff0c…...

DeepSeek-OCR 技术解析:基于视觉压缩的端到端文档理解新范式

1. DeepSeek-OCR&#xff1a;重新定义文档理解的下一代技术 第一次接触DeepSeek-OCR时&#xff0c;我正被一个复杂的多栏报纸数字化项目困扰。传统OCR工具在处理这种复杂版面时&#xff0c;要么丢失栏目分隔信息&#xff0c;要么混淆文字顺序。直到尝试了DeepSeek-OCR的Gundam动…...

病床前尽孝心,脊柱 “被折得濒临损伤”!

长期弯腰照顾卧床病人、喂饭、翻身、擦洗&#xff0c;颈腰椎损伤风险显著。弯腰时腰椎弯曲角度过大&#xff0c;椎间盘承受压力剧增&#xff1b;反复弯腰起身照顾病人&#xff0c;肌肉与椎间盘反复冲击&#xff1b;低头专注护理时&#xff0c;颈椎前伸与腰椎受力形成双重负担。…...

Rockchip Android 12编译踩坑记:手把手教你修改BoardConfig.mk生成userdata.img

Rockchip Android 12编译实战&#xff1a;从BoardConfig.mk修改到userdata.img生成的避坑指南 第一次在Rockchip平台上编译Android 12系统时&#xff0c;我遇到了一个令人抓狂的问题——编译过程看似顺利&#xff0c;但生成的固件烧写到设备后&#xff0c;系统始终无法正常启动…...

Fish Speech 1.5开源大模型落地:为乡村学校定制方言普通话双语教学语音

Fish Speech 1.5开源大模型落地&#xff1a;为乡村学校定制方言普通话双语教学语音 想象一下&#xff0c;在偏远山区的教室里&#xff0c;孩子们正跟着一个亲切的“本地老师”学习普通话。这位老师不仅能说一口标准的普通话&#xff0c;还能用孩子们熟悉的家乡方言进行解释和互…...

终极游戏画质升级指南:用OptiScaler解锁全显卡超采样自由

终极游戏画质升级指南&#xff1a;用OptiScaler解锁全显卡超采样自由 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler OptiScaler是…...

贪心算法3(c++)

概念题目最短前缀题目描述 一个字符串的前缀是从该字符串的第一个字符起始的一个子串。例如carbon的字串是:cca,carcarb,carbo,和carbon。我们现在希望能用前缀来缩略的表示单词。例如,carbohydrate通常用carb来缩略表示&#xff0c;现在给你一组单词&#xff0c;要求你找到唯一…...

从“玩概念”到“真落地”:AI智能体三大场景的突围之路

当行业不再为“大模型参数”狂欢&#xff0c;真正的价值开始浮现——客服自动化、内部知识库、办公Agent&#xff0c;正在成为AI智能体最先跑通商业闭环的三大场景。而决定成败的关键&#xff0c;已经从模型能力转向上下文设计、工具调用与反馈迭代。 2026年&#xff0c;大模型…...

pk3DS完全指南:解锁宝可梦3DS游戏的无限可能

pk3DS完全指南&#xff1a;解锁宝可梦3DS游戏的无限可能 【免费下载链接】pk3DS Pokmon (3DS) ROM Editor & Randomizer 项目地址: https://gitcode.com/gh_mirrors/pk/pk3DS 你是否已经厌倦了千篇一律的宝可梦冒险&#xff1f;每次遇到的野生宝可梦都相同&#xff…...