http模块学习

http模块

  • 客户端:负责消费资源的电脑

  • 服务器:负责对外提供网络资源的电脑,与普通电脑的区别就在于服务器上 安装了web服务器软件。

  • http模块是Node.js官方提供用来 创建web服务器的模块,通过http模块提供的http.createServer()方法,将一台普通电脑变成一台web服务器,从而对外提供web资源

  • 使用http模块创建web服务器,需要使用以下代码导入它
    const http = require('http');
    IP地址:互联网上每台计算机的唯一地址,具有唯一性。采用 “点分十进制”表示,例如192.1688.1.1,互联网上的每台web服务器都有自己的IP地址,可以在windows终端运行ping www.baidu.com,即可查看百度服务器的IP地址,通过百度IP地址可以直接打开百度。在开发期间自己的电脑既是一个服务器也是一个客户端,为了方便测试可以在浏览器输入127.0.0.1这个 IP地址,就能将自己的电脑当作一台服务器进行访问。

  • 服务器相关概念:

    • 域名:字符型的地址方案,即所谓的域名地址,IP地址和 域名是一一对应的关系,由于直接使用IP地址(如192.168.1.1)既不方便记忆也不直观,人们便发明了域名系统,通过有意义的单词组合来代表IP地址,例如"example.com"就是一个典型的域名。域名的结构通常包括顶级域名(如.com、.cn)、二级域名(通常是企业或个人选择的名称,如google),以及可能的子域名(如mail.google.com)。这样的结构设计既方便记忆,又能传达一定的信息。
    • 域名服务器:即DNS,提供IP地址和域名之间的转换服务的服务器。
    • 端口号:类似于门牌号,对应相应的服务器,每个端口号不能同时 被多个web服务器占用,实际应用中URL的80端口可以被省略。在一台电脑中可以运行成百上千个web服务器,每个服务器对应唯一的一个端口号,客户端发送网络请求,,通过端口号准确的交给对应的web服务进行处理。
  • 创建最基本的web服务器

    • 导入http模块
      const http = require('http');
    • 创建web服务器实例
      调用http.createServer()方法即可快速创建一个web服务器实例
      const server = http.createServer();
    • 为服务器实例绑定request事件,监听客户端的请求
    //使用服务器实例的 .on()方法,为服务器绑定一个request事件
    server.on('request', (req, res) => {
    //只要又客户端来请求我们自己的服务器,就会触发request事件,从而调用这个事件处理函数
    	console.log('Someone visit our web server.')
    })
    
    • 启动服务器
    //调用 server.listen(端口号, cb回调)方法,即可启动web服务器
    server.listen(80, () => {
       console.log('http server running at http://127.0.0.1')
    })
    

    总结测试

    测试代码及讲解在最后

  • 分享几个实用的快捷键:

    • node 文件名的第一个字符然后按tab键就可以补全文件名(适用于文件名长)
    • cls命令,终端清屏
    • 键盘上的⬆,按一下就可以出现上一条输入的命令(适用于输入重复命令)
  • 首先运行代码 node 文件名.js 如下

  • 然后复制网址http://127.0.0.1在浏览器打开,也可以直接按住ctrl键点击终端中的该网址,也可以直接打开,显示如下

  • 在后面添加/about.html如下

//导入 http模块
const http = require('http');
//创建web服务器实例
const server = http.createServer();
//为服务器实例绑定request事件,监听客户端的请求
//req是请求对象,包含了与客户端相关的数据和属性
server.on('request', (req, res) => {
  //req.url是客户端请求的URL地址,获取请求的url地址
  const url = req.url;
  //设置默认的内容为 404 Not found
  let content = '<h1>404 Not  found</h1>'
  if (url === '/' || url === '/index.html') {
    content = '<h1>首页</h1>'  //用户请求的是首页
  } else if (url === '/about.html') {
    content = '<h1>关于页面</h1>'  //用户请求的是关于页面
  }
  //req.method是客户端请求的method类型
  //const method = req.method;
  //若是发送的内容包含中文,为了防止中文显示乱码的问题,需要设置响应头 Content-Type的值为 text/html; charset=utf-8
  res.setHeader('Content-Type', 'text/html; charset=utf-8');

  //res是响应对象,用于访问与服务器相关的数据或属性
  //调用res.end()方法向客户端响应一些内容
  res.end(content);
})
//4.启动服务器
server.listen(80, function () {
  //这里前面提到过,如果是80端口可以省略,其它端口格式应该类似于http://127.0.0.1:80
  console.log('server  running at http://127.0.0.1')
})

✌又学完一点点,继续加油(ง •_•)ง

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/417650.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java之Bean对象

1. 什么是Bean&#xff1f; Bean被实例化的&#xff0c;是被Spring框架所管理的Java对象。 Spring容器会自动完成Bean的实例化。将所创建的的Bean自动注入到Ioc容器中以供调用。 spring框架中 IOC容器中管理的对象就是Bean对象 2. 第三方bean Bean 因为第三方bean&#xff0…

找不到mfc140.dll怎么办?教你五种mfc140.dll丢失的解决方法

当计算机系统中mfc140.dll文件丢失时&#xff0c;可能会引发一系列运行问题&#xff0c;影响到系统的正常功能及应用程序的稳定执行。具体来说&#xff0c;由于mfc140.dll是Microsoft Visual C Redistributable Package的重要组成部分&#xff0c;它的缺失会导致依赖于该动态链…

Unity 游戏设计模式:工厂模式

本文由 简悦 SimpRead 转码&#xff0c; 原文地址 mp.weixin.qq.com 工厂模式是一种创建型设计模式&#xff0c;它提供了一种封装对象实例化过程的方式&#xff0c;使得客户端代码与具体类的实现解耦。 在 C# 的游戏设计中&#xff0c;模式有以下作用&#xff1a; 对象的创建…

C++重新入门-string容器

目录 1.包含头文件 2.创建字符串 3.获取字符串长度 4.字符串拼接 5.字符串比较 相等性比较 大小比较 使用比较函数 6.访问字符串 7.查找子串 8.字符串修改 替换子串 插入字符或子串 删除字符或子串 9.提取子串 10.总结 当谈到C中的字符串时&#xff0c;std::str…

Unity绘制六边形体

现在steam上面有很多下棋类/经营类的游戏都是用六边形的地形&#xff0c;比较美观而且实用&#xff0c;去年在版本末期我也自己尝试做了一个绘制六边体的demo&#xff0c;一年没接触unity竟然都要忘光了&#xff0c;赶紧在这边记录一下。 想cv代码可以直接拉到代码章节 功能 …

go语言魔法技能go:linkname

我们在看Go语言的源码时&#xff0c;经常会看到一些特别的注释&#xff0c;比如&#xff1a; //go:build //go:linkname //go:nosplit //go:noescape //go:uintptrescapes //go:noinline //go:nowritebarrierrec等等&#xff0c;这些特别的注释其实是Go编译器的指示指令。这里…

基于JAVA的毕业设计分配选题系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 专业档案模块2.2 学生选题模块2.3 教师放题模块2.4 选题审核模块 三、系统展示四、核心代码4.1 查询专业4.2 新增专业4.3 选择课题4.4 取消选择课题4.5 审核课题 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpri…

Go语言必知必会100问题-10 小心类型嵌入导致的问题

小心类型嵌入导致的问题 在定义结构体时&#xff0c;Go语言支持通过类型嵌入的形式定义结构体字段。但是&#xff0c;如果我们没有真正理解类型嵌入的意义&#xff0c;有时可能会导致意想不到的行为。本文将主要分析如何嵌入类型&#xff0c;类型嵌入的作用以及可能出现的问题…

lv20 QT对话框3

1 内置对话框 标准对话框样式 内置对话框基类 QColorDialog, QErrorMessage QFileDialog QFontDialog QInputDialog QMessageBox QProgressDialogQDialog Class帮助文档 示例&#xff1a;各按钮激发对话框实现基类提供的各效果 第一步&#xff1a;实现组件布局&…

Redis 之三:发布订阅(pub/sub)

概念介绍 Redis 发布订阅 (pub/sub) 是一种消息通信模式&#xff0c;它允许客户端之间进行异步的消息传递 Redis 客户端可以订阅任意数量的频道。 模型中的角色 在该模型中&#xff0c;有三种角色&#xff1a; 发布者&#xff08;Publisher&#xff09;&#xff1a;负责发送信…

【Hudi】核心概念

https://www.bilibili.com/video/BV1ue4y1i7na?p17&vd_sourcefa36a95b3c3fa4f32dd400f8cabddeaf 大数据新风口&#xff1a;Hudi数据湖&#xff08;尚硅谷&Apache Hudi联合出品&#xff09; 1 基础概念 1.1 时间轴(TimeLine) 1.2 文件布局(File Layout) 1.3 索引(In…

Unity-PDF分割器(iTextSharp)

PDF分割器 Unity-PDF分割器前言核心思路解决过程一、Unity安装iTextSharp二、运行时计算将要生成文件的大小三、分割核心代码四、使用StandaloneFileBrowser五、其他的一些脚本六、游戏界面主体的构建MainWindowWarningPanel & FinishPanel By-Round Moon Unity-PDF分割器 …

浅谈 Linux 网络编程 socket

文章目录 socket 介绍 socket 介绍 socket 被翻译成 网络套接字&#xff0c;这个名字实在是不好理解&#xff0c;我更愿意称为"插槽"。 忽略 socket 的中文名&#xff0c;先无脑记住两个规则&#xff1a; ① 记住&#xff0c;一个文件描述符(fd) 指向一个 socket&…

同芯.共赢 | 暴雨服务器亮相AMD EPYC合作伙伴峰会

2月29日&#xff0c;AMD EPYC合作伙伴峰会活动在北京成功举行&#xff0c;暴雨作为AMD重要生态合作伙伴应邀参加。作为AMD开年首场活动&#xff0c;此次活动意义非凡&#xff0c;AMD在现场向合作伙伴分享了AMD数据中心全新产品路线、解决方案以及生态建设领域的最新进展。 AMD是…

android开发平台,Java+性能优化+APP开发+NDK+跨平台技术

开头 通常作为一个Android APP开发者&#xff0c;我们并不关心Android的源代码实现&#xff0c;不过随着Android开发者越来越多&#xff0c;企业在筛选Android程序员时越来越看中一个程序员对于Android底层的理解和思考&#xff0c;这里的底层主要就是Android Framewok中各个组…

机器学习专项课程03:Unsupervised Learning, Recommenders, Reinforcement Learning笔记 Week02

Week 02 of Unsupervised Learning, Recommenders, Reinforcement Learning 课程地址&#xff1a; https://www.coursera.org/learn/unsupervised-learning-recommenders-reinforcement-learning 本笔记包含字幕&#xff0c;quiz的答案以及作业的代码&#xff0c;仅供个人学习…

二分查找讲解

关于我为什么要写单独开一篇文章写二分,实际上那么多困难的算法,比如线段树,并查集等等都没有难倒我,我最近却被二分难倒了,而且是两次,两次在赛场上做不出来二分的应用题,于是我决定写一篇二分查找的算法总结.刚接触算法的时候本来是要写一篇的,但后面因为各种原因搁置了,现在…

R语言数学建模(二)—— tidymodels

R语言数学建模&#xff08;二&#xff09;—— tidymodels 文章目录 R语言数学建模&#xff08;二&#xff09;—— tidymodels前言一、示例数据集二、拆分数据集2.1 拆分数据集的常用方法2.2 验证集2.3 多层次数据2.4 其他需考虑问题 三、parsnip用于拟合模型3.1 创建模型3.2 …

腾讯云优惠券领取的三个渠道,先领券再下单!

腾讯云代金券领取渠道有哪些&#xff1f;腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券&#xff0c;大家也可以在腾讯云百科蹲守代金券&#xff0c;因为腾讯云代金券领取渠道比较分散&#xff0c;腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

禁止safari浏览器网页双击缩放功能

普通浏览器 普通浏览器&#xff0c;只需要增加meta标签禁止缩放功能就行了 <meta content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalable0;" name"viewport" /> user-scalableno或0 //禁止双指缩放页面initial-scale1.0…