http模块学习

news2024/11/17 20:38:13

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')
})

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

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

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

相关文章

WPS/Office 好用的Word插件-查找替换

例如&#xff1a;一片文档&#xff1a;…………泰山…………泰&#xff08;少打了山字&#xff09;………… 要是把“泰”查找替换为“泰山”&#xff0c;就会把前面的“泰山”变成“泰山山”&#xff0c;这种问题除了再把“泰山山”查找替换为“泰山”&#xff0c;有没有更简单…

1978-2022年各省农业总产值数据(无缺失)

1978-2022年各省农业总产值数据(无缺失) 1、时间&#xff1a;1978-2022年 2、范围&#xff1a;包括全国31省 3、来源&#xff1a;国家统计J、统计NJ、各省NJ 4、指标解释&#xff1a;农业总产值是一定时期&#xff08;通常为一年&#xff09;内以货币形式表现的农、林、牧、…

RK3568平台开发系列讲解(基础篇)文件私有数据

🚀返回专栏总目录 文章目录 一、文件私有数据二、文件私有数据实验沉淀、分享、成长,让自己和他人都能有所收获!😄 一、文件私有数据 Linux 中并没有明确规定要使用文件私有数据,但是在 linux 驱动源码中,广泛使用了文件私有数据,这是 Linux 驱动遵循的“潜规则”,实…

【三、接口协议与抓包】使用TcpDump + WireShark抓包分析三次握手与四次挥手

你好啊&#xff01;我是山茶&#xff0c;一个持续探索 AI 测试之路的程序员。 对于三次握手与四次挥手的理解与基本讲解如下。 那么具体的请求是什么样的呢&#xff1f;使用 TCPDump WireShark 对 TCP 三次握手与四次挥手展示 协议分析工具 网络监听&#xff1a;TcpDump Wi…

Centos中安装Docker及Docker的使用

在centos7系统中安装指定版本的docker,并通过docker使用安装mysql为例,阐述docker的使用。 2.1、Docker卸载及安装yum依赖 【卸载Docker,如果安装的Docker的版本不合适】 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-…

探索口袋中的远程控制神器

在这个科技日新月异的时代&#xff0c;我们的生活被各种手机软件所包围。几乎每个人都有一个甚至多个手机&#xff0c;你是否也有遇到过需要远程操作自己某一台手机的场景呢&#xff1f;今天&#xff0c;我要向大家推荐一款神奇的手机远程操作神器&#xff0c;让你可以随时随地…

旧版android模拟器,37岁程序员被裁

前言 从18年毕业至今&#xff0c;就职过两家公司&#xff0c;大大小小项目做了几个&#xff0c;非常感谢我的两位老大&#xff0c;在我的android成长路上给予我很多指导&#xff0c;亦师亦友的关系。 从年前至今参加面试了很多公司&#xff0c;也收到了几家巨头的offer&#…

对齐了之后才舒服,matplotlib文字和字体设置

文章目录 text方法字体局部字体 matplotlib教程&#xff1a; 初步&#x1f4c8; 子图绘制&#x1f4c8; 坐标投影&#x1f4c8; 刻度设置&#x1f4c8; 共享坐标轴&#x1f4c8; 内容填充 text方法 【plt】提供了文字显示函数text&#xff0c;包含三个必不可少的参数&am…

【VSCODE修改代码行间距】解决方案

在我们编码的过程中&#xff0c;由于显示字体和显示器的不同&#xff0c;会需要调整行间距&#xff0c;在vscode默认的选项中没有看到设定行间距的选项&#xff0c;不过&#xff0c;可以手动修改配置档达到目的。 1.打开设置 2.打开配置档&#xff0c;手动进行设定 3.在选项中添…

Vue3自定义文件列表页面(含上传、搜索、复制链接)

文章目录 一、代码展示二、代码解读三、结果展示 一、代码展示 <template><div class"container"><h1>文件列表</h1><div class"header-actions"><a-input placeholder"输入关键词搜索" v-model:value"…

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(一)

ACM9238 高速双通道ADC模块自助服务手册AD9238 一、实验目的 本次实验通过电脑上的网络调试助手&#xff0c;将命令帧进行发送&#xff0c;然后通过ACZ7015开发板上的以太网芯片接收&#xff0c;随后将接收到的数据转换成命令&#xff0c;从而实现对ACM9238模块采样频率、数据…

Java配置48-nginx 按照日期生成日志

1. 背景 默认情况下&#xff0c;nginx 的日志会一直输入到 access.log&#xff0c;长时间运行后会导致这个日志文件过大。 2. 方法 修改 nginx.conf map $time_iso8601 $logdate {~^(?<ymd>\d{4}-\d{2}-\d{2}) $ymd;default date-not-found;}access_log logs/acce…

用vivado创建一个赛灵思AXI的IP核

一、新建一个管理IP的任务 二、设置板子&#xff0c;verilog语言和文件位置 三、创建新的IP核 添加一个axi-full的master接口和axi-full的slave接口 四、查看赛灵思AXI代码 第一个是axi的master接口代码&#xff0c;下面的是axi的slave接口代码 五、打包IP核以供后续使用 六、…

【C语言基础】:深入理解指针(一)

文章目录 一、内存和地址1. 内存2. 如何理解编址 二、指针变量和地址2.1 取地址操作符(&)2.2 指针变量和解引用操作符(*)2.2.1 指针变量2.2.2 如何拆解指针变量2.2.3 解引用操作符 2.3 指针变量的大小 三、指针变量类型的意义3.1 指针的解引用3.2 指针 - 整数3.3 void*指针…

企业级指针仪表读数YOLOV8NANO

企业级指针仪表读数&#xff0c;采用YOLOV8NANO训练&#xff0c;检测表盘和表芯&#xff0c;得到PT模型&#xff0c;然后转换ONNX&#xff0c;让OPENCV调用。然后提取表芯区域&#xff0c;通过极坐标转换为直角坐标&#xff0c;再通过检测指针和刻度&#xff0c;换算成比例&…

【k8s管理--Helm包管理器】

1、Helm的概念 Kubernetes包管器 Helm是查找、分享和使用软件构件Kubernetes的最优方式。 Helm管理名为chart的Kubernetes包的工具。Helm可以做以下的事情&#xff1a; 从头开始创建新的chat将chart打包成归档tgz)文件与存储chat的仓库进行交互在现有的Kubernetes集群中安装和…

【Spring Cloud 进阶】OpenFeign 底层原理解析

参考文章 万字33张图探秘OpenFeign核心架构原理 | 三友SpringCloud OpenFeign源码详细解析Java 代理机制 OpenFeign 是一个精彩的使用动态代理技术的典型案例&#xff0c;通过分析其底层实现原理&#xff0c;我们可以对动态代理技术有进一步的理解。 目录 1. Feign 与 OpenFeig…

实验笔记之——Ubuntu20.04配置nvidia以及cuda并测试3DGS与SIBR_viewers

之前博文测试3DGS的时候一直用服务器进行开发&#xff0c;没有用过笔记本&#xff0c;本博文记录下用笔记本ubuntu20.04配置过程&#xff5e; 学习笔记之——3D Gaussian Splatting源码解读_3dgs运行代码-CSDN博客文章浏览阅读3.2k次&#xff0c;点赞34次&#xff0c;收藏62次…

智能指针(C++)

目录 一、智能指针是什么 二、为什么需要智能指针 三、智能指针的使用和原理 3.1、RALL 3.2 智能指针的原理 3.3、智能指针的分类 3.3.1、auto_ptr 3.3.2、unique_ptr 3.3.3、shared_ptr 3.2.4、weak_ptr 一、智能指针是什么 在c中&#xff0c;动态内存的管理式通过一…

从 iOS 设备恢复数据的 20 个iOS 数据恢复工具

作为 iPhone、iPad 或 iPod 用户&#xff0c;您可能普遍担心自己可能会丢失存储在珍贵 iOS 设备中的所有宝贵数据。数据丢失的原因多种多样&#xff0c;这里列出了一些常见原因&#xff1a; 1. iOS 软件更新 2. 恢复出厂设置 3. 越狱 4. 误操作删除数据 5. iOS 设备崩溃 …