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

Node.js中http模块(二)

一、http模块

http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer0) 方法,就能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务。

二、域名和域名服务器

尽管 IP 地址能够唯一地标记网络上的计算机,但!P地址是一长串数字,不直观,而且不便于记忆,于是人们又发明了另一套字符型的地址方案,即所谓的域名(Domain Name)地址。

IP地址和域名是--对应的关系,这份对应关系存放在一种叫做域名服务器(DNS,Domain name server)的电脑中。使用者只需通过好记的域名访问对应的服务器即可,对应的转换工作由域名服务器实现。因此,域名服务器就是提供 IP 地址和域名之间的转换服务的服务器。

注意:

  • 单纯使用 IP 地址,互联网中的电脑也能够正常工作。但是有了域名的加持,能让互联网的世界变得更加方便
  • 在开发测试期间, 127.0.0.1 对应的域名是 localhost,它们都代表我们自己的这台电脑,在使用效果上没有任何区别

 三、端口号

在一台电脑中,可以运行成百上千个web 服务。每个 web 服务都对应一个唯一的端口号。客户端发送过来的网络请求,通过端口号,可以被准确地交给对应的 web 服务进行处理。

四、创建web服务器的步骤

 (1)导入http模块

const http = require('http');

(2)创建web服务器实例

调用http.createServer()方法

// 创建 HTTP 服务器
const server = http.createServer((req, res) => {// 设置响应头res.writeHead(200, { 'Content-Type': 'text/plain' });// 发送响应内容res.end('Hello, World!\n');
})

(3)为服务器实例绑定request事件

用于监听客户端的请求,使用server.on()方法。

server.on('request',(req,res)=>{})

req请求对象:只要服务器接收到了客户端的请求,就会调用通过 server.on0 为服务器绑定的 request 事件处理函数。如果想在事件处理函数中,访问与客户端相关的数据或属性,可以使用如下的方式:

server.on('request', req=> {//req.url是客户端请求的URL地址//req.method是客户端请求的方法//req.headers是客户端请求的头信息//res是服务器响应对象const str=`你访问的地址是${req.url},请求方法是${req.method},请求头信息是${JSON.stringify(req.headers)}`res.setHeader('Content-Type', 'text/plain;charset=utf-8')console.log(str,'这是服务器响应:')// console.log('收到请求')
})

 res响应对象:在服务器的 request 事件处理函数中,如果想访问与服务器相关的数据或属性,可以使用如下的方式:

server.on('request', (req, res) => {const str=`你访问的地址是${req.url},请求方法是${req.method}`console.log(str, '这是服务器响应:')//res.end()方法用于结束响应,并发送响应数据到客户端res.end(str)
})

(4)启动服务器

利用server.listen()方法来启动服务器。

// 服务器监听端口 3000
server.listen(3000, () => {console.log('Server running at http://localhost:3000/');
});

五、解决中文乱码问题

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

server.on('request', (req, res) => {const str = `你访问的地址是${req.url},请求方法是${req.method}`//为了防止中文乱码,设置响应头res.setHeader('Content-Type', 'text/plain;charset=utf-8')console.log(str, '这是服务器响应:')//res.end()方法用于结束响应,并发送响应数据到客户端res.end(str)
})

六、根据不同的URL响应不同的HTML

(1)获取请求的URL地址

server.on('request', (req, res) => {//获取请求的URL地址const url =req.url
})

(2)设置默认的响应内容为404 Not found

server.on('request', (req, res) => {//获取请求的URL地址const url = req.url//设置默认的响应内容为 404 Not Foundlet content = '404 Not Found'
})

(3)判断用户请求的是否为/或/index.html首页

(4)判断用户请求的是否为/about.html关于页面

server.on('request', (req, res) => {//获取请求的URL地址const url = req.url//设置默认的响应内容为 404 Not Foundlet content = '404 Not Found'//判断用户请求的是否为/或/index.html首页//判断用户请求的是否为/about.html关于页面if (url === '/' || url === '/index.html') {content = '<h1>首页</h1>'} else if (url === '/about.html') {content = '<h1>关于页面</h1>'}
})

(5)设置Content-Type响应头,防止中文乱码

 //设置响应头res.setHeader('Content-Type', 'text/html;charset=utf-8')

(6)使用res.end()把内容响应给客户端

server.on('request', (req, res) => {//获取请求的URL地址const url = req.url//设置默认的响应内容为 404 Not Foundlet content = '404 Not Found'//判断用户请求的是否为/或/index.html首页//判断用户请求的是否为/about.html关于页面if (url === '/' || url === '/index.html') {content = '<h1>首页</h1>'} else if (url === '/about.html') {content = '<h1>关于页面</h1>'}//设置响应头res.setHeader('Content-Type', 'text/html;charset=utf-8')//设置响应内容res.end(content)
})

相关文章:

Node.js中http模块(二)

一、http模块 http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer0) 方法&#xff0c;就能方便的把一台普通的电脑&#xff0c;变成一台 Web 服务器&#xff0c;从而对外提供 Web 资源服务。 二、域名和域名服务器 尽管 I…...

主流顶级域名服务商ZDNS连续十余年跟进国际顶级域名政策制定

顶级域名(TLD,Top-Level Domain)是域名层次结构中的最高层,位于域名最后一段,也即最右边的点(.)之后的字符。品牌顶级域名是顶级域名的一种,以品牌相关名称命名,由品牌所属企业申请、运营、并自由分配二级域名,能够直接反映企业或品牌的形象和特色,如.citic、.中信、.baidu、.联…...

低至3折,百度智能云千帆宣布全面支持DeepSeek-R1/V3调用

DeepSeek-R1和 DeepSeek-V3模型已在百度智能云千帆平台上架 。 出品|产业家 新年伊始&#xff0c;百度智能云又传来新动作 。 2月3日百度智能云宣布&#xff0c; DeepSeek-R1和 DeepSeek-V3模型已在百度智能云千帆平台上架&#xff0c;同步推出超低价格方案&#xff0c;并…...

解释一下数据库中的事务隔离级别,在 Java 中如何通过 JDBC设置事务隔离级别?

数据库中的事务隔离级别是用于控制并发事务之间相互影响的一种机制。 它定义了事务之间的可见性和影响范围&#xff0c;常见的隔离级别包括&#xff1a; 读未提交&#xff08;Read Uncommitted&#xff09;&#xff1a;最低的隔离级别&#xff0c;事务中的修改即使没有提交也…...

【自动化测试】使用Python selenium类库模拟手人工操作网页

使用Python selenium类库模拟手人工操作网页 背景准备工作安装Python版本安装selenium类库下载selenium驱动配置本地环境变量 自动化脚本输出页面表单自动化填充相关代码 背景 待操作网页必须使用IE浏览器登录访问用户本地只有edge浏览器&#xff0c;通过edge浏览器IE模式访问…...

【Apache Paimon】-- 15 -- 利用 paimon-flink-action 同步 postgresql 表数据

利用 Paimon Schema Evolution 核心特性同步变更的 postgresql 表结构和数据 1、背景信息 在Paimon 诞生以前,若 mysql/pg 等数据源的表结构发生变化时,我们有几种处理方式 (1)人工消息通知,然后手动同步到数据仓库中(2)使用 flink 消费 DDL binlog ,然后自动更新 Hi…...

PostgreSql-COALESCE函数、NULLIF函数、NVL函数使用

COALESCE函数 COALESCE函数是返回参数中的第一个非null的值&#xff0c;它要求参数中至少有一个是非null的; select coalesce(1,null,2),coalesce(null,2,1),coalesce(null,null,null); NULLIF(ex1,ex2)函数 如果ex1与ex2相等则返回Null&#xff0c;不相等返回第一个表达式的值…...

springboot+vue导入ruoyi项目的框架

一、介绍 RuoYi-Vue版本&#xff0c;采用了前后端分离的单体架构设计软件环境&#xff1a;JDK、Mysql、Redis、Maven、Node技术选型: Spring Boot、Spring Security、MyBatis、Jwt、Vue3、Element-Plus官方地址: https://gitee.com/y_project/RuoYi-Vue 官方推荐的版本如下&a…...

金蛇祈福,鸿运开年!广州白云皮具城2025开市大吉!

锣鼓一响&#xff0c;黄金万两&#xff01;2月6日大年初九&#xff0c;广州白云皮具城举行盛大的醒狮开市仪式&#xff01;象征吉祥如意的醒狮&#xff0c;将好运、财运传递给全体商户和八方来客。 醒狮点睛 金鼓一响黄金万两&#xff0c;十头醒狮登台&#xff0c;董事总经理刘…...

DeepSeek本地化部署

文章目录 前言一、主机配置二、工具下载Ollama下载安装退出Ollama下载DeepSeek R1模型下载安装ChatBox实现可视化交互ChatBox设置模型 前言 最近的国产大模型DeepSeek横空出事&#xff0c;笔者也关注了下。网页版的免费而且推理速度很快&#xff0c;重量级的是它把自己详细的推…...

MoviePy,利用Python自动剪辑tiktok视频

Python剪辑视频是非常强大的&#xff0c;而且能流水线批量操作&#xff0c;可以使用MoviePy库实现。 最近看到一个Github项目&#xff0c;作者利用Python写了一个自动生成tiktok视频的脚本&#xff0c;受到热捧。 现在像抖音、tiktok上有很多流水线生产的视频&#xff0c;不少…...

ubuntu20.04+RTX4060Ti大模型环境安装

装显卡驱动 这里是重点&#xff0c;因为我是跑深度学习的&#xff0c;要用CUDA&#xff0c;所以必须得装官方的驱动&#xff0c;Ubuntu的附件驱动可能不太行. 进入官网https://www.nvidia.cn/geforce/drivers/&#xff0c;选择类型&#xff0c;最新版本下载。 挨个运行&#…...

2024~2025学年佛山市普通高中教学质量检测(一)【高三数学】

一、选择题 本题共8小题&#xff0c;每小题5分&#xff0c;共40分。在每小题给出的四个选项中。只有一项是符合题目要求的。 1、若 5 z 2 i 1 \frac{5}{z}2i1 z5​2i1&#xff0c;则 z z z A. 1-2i B. 12i C. 2-i D. 2i2、已知集合 A { x ∣ 1 < x < a } A\left\{…...

管理etcd的存储空间配额

如何管理etcd的存储空间配额 - 防止集群存储耗尽指南 本文基于etcd v3.4官方文档编写 为什么需要空间配额&#xff1f; 在分布式系统中&#xff0c;etcd作为可靠的键值存储&#xff0c;很容易成为系统瓶颈。当遇到以下情况时&#xff1a; 应用程序频繁写入大量数据未及时清理…...

备战蓝桥杯-洛谷

今天打算写一些洛谷上面的题目 P10904 [蓝桥杯 2024 省 C] 挖矿 https://www.luogu.com.cn/problem/P10904 看了大佬写的题解才写出来这道题的&#xff1a;题解&#xff1a;P10904 [蓝桥杯 2024 省 C] 挖矿 - 洛谷专栏 思路&#xff1a; 这是一道贪心的题目&#xff0c;用…...

在线免费 HTML 预览导出为图片,并且支持水平切割

在线体验 作用&#xff1a;可以直接预览 html 的页面效果&#xff0c;导出为图片&#xff0c;支持指定切割的数量&#xff0c;等高水平切割。 https://houbb.github.io/tools/html-preview.html 创作背景 有时候希望给一段 html 导出为长度&#xff0c;或者水平切分&#xff…...

洛谷题目: P2996 [USACO10NOV] Visiting Cows G 题解

题目传送门&#xff1a; P2996 [USACO10NOV] Visiting Cows G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 前言&#xff1a; 本题的核心问题是在一棵由奶牛&#xff08;节点&#xff09;和道路&#xff08;边&#xff09;构成的树状结构中&#xff0c;根据 “不能同时拜…...

告别手动操作!用Ansible user模块高效管理 Linux账户

在企业运维环境中&#xff0c;服务器的用户管理是一项基础但非常重要的任务。比如&#xff0c;当有新员工加入时&#xff0c;我们需要在多台服务器上为他们创建账户并分配合适的权限。而当员工离职或岗位发生变化时&#xff0c;我们也需要迅速禁用或删除他们的账户&#xff0c;…...

java 8 在 idea 无法创建 java spring boot 项目的 变通解决办法

java 8 在 idea 无法创建 java spring boot 项目的 变通解决办法 spring boot 3 官方强制 要用 java 17 &#xff0c;但是 不想安装java 17的 &#xff0c;但是又想 使用 spring boot &#xff0c;可以这样 &#xff1a; 在这个网站 https://start.aliyun.com/ 选择 你相对…...

javaEE初阶————多线程初阶(3)

大家新年快乐呀&#xff0c;今天是第三期啦&#xff0c;大家前几期的内容掌握的怎么样啦&#xff1f; 1&#xff0c;线程死锁 1.1 构成死锁的场景 a&#xff09;一个线程一把锁 这个在java中是不会发生的&#xff0c;因为我们之前讲的可重入机制&#xff0c;在其他语言中可…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...