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.mzph.cn/pingmian/7502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式RTOS面试题目

用过哪些嵌入式操作系统?使⽤RTOS和裸机代码开发有什么区别(优缺点)? 之前的⼀个项⽬是采⽤裸机代码开发的,写起来还⾏,通过状态机来管理业务逻辑和各种外设。 但是随着外设的增加,任务之间的…

CSDN我的创作纪念日128天||不忘初心|努力上进|勇往直前

机缘 Hello,大家好,我是景天,其实很早之前我就加入到了CSND的大军,但那是我还是个小白,经常回来CSND汲取养料,就这样慢慢的来提升自己,强大自己。经过多年的学习,积累与总结&#x…

Davinci工程开发方法论

基本概念 Flash Driver是下载到RAM里面的bin文件 Boot Manager是ROM上启动运行的第一个实例,可以是独立的bin文件,可以是集成在FBL里面。 Bootloader存储在ROM里面的bin文件 Demo Appl一个示例模板,用来跳转到Bootloader的,也是一…

本地的git仓库和远程仓库

文章目录 1. 远程创建仓库2. 关联远程和本地代码3. 推送本地分支到远程 1. 远程创建仓库 2. 关联远程和本地代码 上面创建完后会得到一个git仓库的链接,有SSH或者http的 http://gitlab.xxxxx.local:18080/xxxxx/dvr_avm.git ssh://gitgitlab.xxxxx.local:10022/xx…

220V转18V500mA非隔离恒压WT5113

220V转18V500mA非隔离恒压WT5113 亲爱的朋友们,你们是否在为如何提高电源方案而烦恼呢?今天我给大家带来了一款芯片,WT5113宽输出范围非隔离交直流转换芯片,它可是电源方案中的得力助手哦! 这款芯片拥有220V降12V、2…

Mujoco210和Mujoco-py在 Ubuntu22.04 下的安装

mujoco和mujoco-py的关系:mujoco是一个物理引擎,主要应用于强化学习和最优化控制领域。mujoco-py是mujoco编程的 Python 接口,由OpenAI Gym开发,可以使用mujoco_py方便地调用mujoco的API。 mujoco官网: https://mujoco…

国产中间件概述

1、什么是中间件? 1.1、基本概念 定义:中间件,英文名为 Middleware,是独立的系统级软件,连接操作系统层和应用程序层,将不同操作系统提供应用的接口标准化、协议统一化,屏蔽具体操作的细节。位置:居于各类应用与操作系统之间,在操作系统、网络和数据库之上,应用软件…

Linux(openEuler、CentOS8)企业内网主备DNS服务器搭建

本实验环境为openEuler系统<以server方式安装>&#xff08;CentOS类似&#xff0c;可参考本文&#xff09; 知识点 什么是DNS&#xff1a;DNS服务器&#xff0c;即域名服务器&#xff08;Domain Name Server&#xff09;&#xff0c;是进行域名和与之相对应的IP地址转换…

24年最新AI数字人简单混剪

24年最新AI数字人简单混剪 网盘自动获取 链接&#xff1a;https://pan.baidu.com/s/1lpzKPim76qettahxvxtjaQ?pwd0b8x 提取码&#xff1a;0b8x

2024年如何下载51cto的视频

你是否对学习新的技术知识感到困惑&#xff1f;是否在寻找一个优质的在线学习平台&#xff1f;那么&#xff0c;我告诉你一个秘密——51cto视频平台&#xff01;它是一个专注于技术领域的视频平台&#xff0c;提供了大量的高质量视频资源。如果你想在2024年下载51cto的视频&…

白酒:白酒香型与历史文化传承的关联性研究

云仓酒庄的豪迈白酒作为中国白酒的品牌&#xff0c;其香型与历史文化传承之间存在着紧密的关联。白酒的香型不仅是酿造技艺的体现&#xff0c;更是中华历史文化的重要组成部分。 首先&#xff0c;白酒的香型与中国的地理、气候和自然资源密切相关。不同地区的白酒产区&#xff…

用脚本写一个日期样式的字符

现在想要诸如此类样式的语句&#xff1a;&#xff08;过去三个月的&#xff09; 可以用python脚本写&#xff1a; from datetime import date, timedelta# 获取当前日期 current_date date.today()# 定义过去三个月的时间间隔 three_months_ago current_date - timedelta(da…

QT+多线程编程

QT的多线程编程有两种 1、自定义类继承QThread 第一种是自定义一个类继承于QThread&#xff0c;重写run()方法来实现。然后当需要使用线程的时候你就新建一个自定义对象&#xff0c;然后调用start方法开始运行。 下面的例子是widget里面创建一个线程&#xff0c;然后调用sta…

BGP协议应用:SW1、SW2、SW3、RT1、RT2之间运行BGP协议

8.SW1、SW2、SW3、RT1、RT2之间运行BGP协议,SW1、SW2、RT1 AS号65001、RT2 AS号65002、SW3 AS号65003。 (1)SW1、SW2、SW3、RT1、RT2之间通过Loopback1建立IPv4 BGP邻居。SW1和SW2之间财务通过Loopback2建立IPv4 BGP邻居,SW1和SW2的Loopback2互通采用静态路由。 (2)SW1…

C++基础——深拷贝和浅拷贝

C中类的拷贝有两种&#xff1a;深拷贝&#xff0c;浅拷贝&#xff1a;当出现类的等号赋值时&#xff0c;即会调用拷贝函数 一、概念 浅拷贝&#xff1a;同一类型的对象之间可以赋值&#xff0c;使得两个对象的成员变量的值相同&#xff0c;两个对象仍然是独立的两个对象&#…

Centos上通过Docker安装单节点ES

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 Elasticsearch 是一…

美易官方:美股周一收高,道指连续第四个交易日上涨

收盘之际&#xff0c;美股市场周一的表现可圈可点&#xff0c;各大股指纷纷走高&#xff0c;道指更是连续第四个交易日实现上涨。这一积极态势不仅凸显了投资者对于全球经济的信心&#xff0c;也反映了市场对于未来前景的乐观预期。 道指涨176.59点&#xff0c;涨幅为0.46%&…

最新贷款市场报价利率(LPR)数据(1991-2024)

数据来源&#xff1a;东方财富网时间跨度&#xff1a;1991-2024年 数据范围&#xff1a;全国范围 数据指标&#xff1a; LPR_1Y利率(%) LPR_5Y利率(%) 中长期贷款利率:5年以上(%) 短期贷款利率:6个月至1年(含)(%) 日期 样例数据&#xff1a; 下载链接&#xff1a; ht…

枚举类型和联合体类型

一、 枚举类型 简单介绍一下 枚举 顾名思义 就是一一例举 像我们生活中的很多东西 比如说一周有多少天 性别有几种 这些都可以用枚举类型来一一列举 1. 枚举类型的定义 我们以性别为例子 这里如果我们开始打印它们的数值的话 我们会发现 typedef enum Sex {MALE,FEMALE…

Docker 的网络实现

简介 标准的 Docker 支持以下 4 类网络模式&#xff1a; 1&#xff09;host 模式&#xff1a;使用 --nethost 指定 2&#xff09;container 模式&#xff1a;使用–netcontainer:NAME_or_ID 指定 3&#xff09;none模式&#xff1a;使用 --netnone 指定 4&#xff09;bridge 模…