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

【Node.js】 创建web服务器

Node.js

          • 什么是客户端,什么是服务器
          • 服务器和普通电脑的区别
          • 什么是http模块
          • 导入http模块
          • 服务器相关概念
          • 创建web服务器的基本步骤
          • req请求对象
          • req响应对象
          • 解决中文乱码
          • 根据不同的url响应不同的html内容

什么是客户端,什么是服务器
  • 客户端
  • 在网络节点中,负责消费资源的电脑叫做客户端
  • 服务器
  • 负责对外提供网络资源的电脑,叫做服务器
服务器和普通电脑的区别
  • 服务器上安装了web服务软件,例如:IIS,Apache等,通过安装这些服务器软件(外网服务器),就把普通电脑变成web服务器了
  • 在node.js中,我们不需要使用第三方外网服务器软件,因为我们可以基于node.js提供的http模块,通过几行代码手写一个服务器,从而对外提供web服务
什么是http模块
  • http模块是Node.js官方提供的,用来创建web服务器的模块
  • 通过http模块提供的http.createServer()方法,就能方便的把一台普通的电脑,变成一台web服务器,从而对外提供web资源服务
导入http模块
const http = require('http')
服务器相关概念
  • IP地址,就是互联网上每台计算机的唯一地址,IP地址具有唯一性
  • 域名地址,因为IP地址是一长串数字,不便于记忆,于是人们使用另一套字符型的地址方案,即域名地址
  • DNS域名服务器,IP地址和域名是一一对应的关系,这个关系存放在DNS域名服务器的电脑中,可以实现之间的转化
  • 例如:127.0.0.1对应的域名是localhost
  • 端口号,类似现实生活中的门牌号,一台电脑运行n个web服务,每个服务对应唯一一个端口号,客户端发送的请求,通过端口号,可以准确的交给对应的web服务进行处理
  • (每个端口号只能被一个web服务占用)(实际应用中,url的80端口可以被省略)
创建web服务器的基本步骤
//步骤一:导入http模块
const http = require('http')
//步骤二:创建web服务器实例
const server= http.createServer()
//步骤一:为服务器实例绑定reqest事件,监听客户端的请求
server.on('request',(req,res)=>{ //参数一是事件的名称,参数二是触发事件的回调//只要有客户端请求我们服务器,就会触发reqest事件,从而调用这个事件处理函数console.log("请求了!")
})
//步骤四:启动服务器
server.listen(80,()=>{ //参数一是端口号,让服务器运作在80端口处,参数二,请求成功的回调console.log("启动成功")
})
//运行时,cmd运行node 文件名
//vscode运行,终端-新建终端-

请添加图片描述

  • 运行如果报错,别慌,只是你现在用的端口被占用了
    在这里插入图片描述
req请求对象
  • 只要服务器接收到了客户端的请求,就会调用server.on()为服务器绑定的reqest事件处理函数
  • 如果想在事件处理函数中,处理与客户端相关的数据或属性,可以使用下面方法
server.on('request',(req)=>{ //参数一是事件的名称,参数二是触发事件的回调//req是请求对象,它包含了与客户端相关的数据和属性//req.url是客户端请求的URl地址//req。mrthod是客户端的method请求类型console.log("请求了!")
})
//点击下方地址就可请求
server.listen(80, () => { //参数一是端口号,让服务器运作在80端口处,参数二,请求成功的回调console.log("启动成功http://127.0.0.1")
})
req响应对象
  • 在服务器的reqest事件处理函数中,如果想访问与服务器相关的数据或属性
server.on('request',(req,res)=>{ //参数一是事件的名称,参数二是触发事件的回调//res是响应对象,它包含了与服务端相关的数据和属性//要发送到客户端的字符串const str ="想发送的字符串"//res.end()方法的作用//向客户端发送指定的内容,并结束这次请求res.end(str)
})
解决中文乱码
  • 当调用res.end方法时候,向客户端发送中文内容的时候,会出现乱码问题,此时,需要手动设置内容的编码格式
  • 需要设置响应头
    请添加图片描述
server.on('request',(req,res)=>{ //要发送到客户端的字符串const str ="想发送的字符串"res.setHeader('Content-Type','text/html;charset=UTF-8')//res.end()方法的作用res.end(str)
})

请添加图片描述

根据不同的url响应不同的html内容
  • 获取请求的url地址
  • 设置默认的响应内容为404 Not found
  • 判断用户的请求是否为想要的页面
  • 设置Contant-Type响应头,防止中文乱码
  • 使用res.end()把内容响应给客户端
server.on('request', (req, res) => {const url = res.urllet content = "<h1>404 Not found</h1>"if(url==='/'||url==='/index/html'){content ="<h1>首页</h1>"}else{content ="<h1>编程</h1>"}res.setHeader('Content-Type','text/html;charset=UTF-8')res.end(content)
})
server.listen(80, () => { //点击链接进行请求console.log("启动成功http://127.0.0.1")
})

请添加图片描述

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

相关文章:

  • 基于go语言实现RestFul交互
  • 情感溢出:读《浣溪沙》
  • 深入解读.NET MAUI音乐播放器项目(一):概述与架构
  • 【Python小游戏】某程序员将套圈游戏玩儿到了巅峰,好嗨哟~Pygame代码版《牛牛套圈》已上线,大人的套圈游戏太嗨了,小孩勿进。
  • php的declare命令如何使用?
  • 嵌软工程师要掌握的硬件知识2:一文看懂什么开漏和推挽电路(open-drain / push-pull)
  • 1.2.6存储结构-磁盘管理:单缓冲区与双缓冲区读取、流水线周期、计算流水线执行时间
  • 【pytest接口自动化测试】结合单元测试框架pytest+数据驱动模型+allure
  • 展锐平台WIFI吞吐问题解决方案
  • 全局向量的词嵌入(GloVe)
  • 华为OD机试 - 特异性双端队列(Python),真题含思路
  • 【Linux】操作系统进程概念
  • C语言const的用法详解
  • Day886.MySQL的“饮鸩止渴”提高性能的方法 -MySQL实战
  • 08- 数据升维 (PolynomialFeatures) (机器学习)
  • 2023备战金三银四,Python自动化软件测试面试宝典合集(二)
  • 笔试题-2023-紫光展锐-数字芯片设计【纯净题目版】
  • WordPress网站日主题Ri主题RiProV2主题开启了验证码登录但是验证码配置不对结果退出登录后进不去管理端了
  • 自动驾驶感知——毫米波雷达
  • 取电芯片全协议都可兼容
  • 自己总结优化代码写法
  • Java体系最强干货分享—挑战40天准备Java面试,最快拿到offer!
  • 云计算|OpenStack|错误记录和解决方案(不定时更新)
  • 项目实战-NewFixedThreadPool线程池
  • 导数与微分总复习——“高等数学”
  • Linux软件安装
  • 【表面缺陷检测】基于YOLOX的PCB表面缺陷检测(全网最详细的YOLOX保姆级教程)
  • 【C#基础】C# 程序基础语法解析
  • 【webpack】webpack 中的插件安装与使用
  • 生物素-磺基-活性酯,Sulfo-NHS Biotin科研用试剂简介;CAS:119616-38-5