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 foundlet 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-8res.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:80console.log('server  running at http://127.0.0.1')
})

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

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

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

相关文章

FL Studio21.3中文官方汉化版安装包补丁包下载

关于FL Studio 21的教程或视频链接&#xff0c;您可以在各大视频平台或官方网站上寻找。由于我无法直接提供链接&#xff0c;我建议您在搜索引擎中输入“FL Studio 21教程”或“FL Studio 21视频教程”等关键词&#xff0c;就能找到大量的相关教学资源和视频链接。这些教程通常…

SDRPI烧写教程

首先准备好需要烧写的文件&#xff0c;一共有两个 .BIN 和 .elf文件 这里提供测试文件链接&#xff1a;https://pan.baidu.com/s/1P2cjCqOCyJg7hRhbqWue9Q 提取码&#xff1a;49jp 把SDRPI设置为JTAG模式 插上电源和JTAG线&#xff0c;这块板子的电源和UART使用的是同一个接…

pytorch标准化与模型训练推理以及中间层注意点

1.图像归一化和通道转换操作 a np.arange(3*3*3).reshape(3,3,3).astype(np.uint8) print(a) function transforms.ToTensor()#注意只能转换3维度的ndarray或者PIL的Image类型 c function(a) print(c) D:\anaconda3\python.exe E:\test\pythonProject\test.py [[[ 0 1 2…

【李沐论文精读】Resnet精读

论文地址&#xff1a;Deep Residual Learning for Image Recognition 参考&#xff1a;撑起计算机视觉半边天的ResNet【论文精读】、ResNet论文逐段精读【论文精读】、【李沐论文精读系列】 一、导论 深度神经网络的优点&#xff1a;可以加很多层把网络变得特别深&#xff0c;…

使用postman测试若依登录接口API-2

请求方式 由于登录控制器可知&#xff1a;该请求方式为Post请求 请求地址 在请求路径栏输入请求地址&#xff0c;如下图所示&#xff1a; 参数体 在Body键入所需参数&#xff0c;类型选择raw,数据格式选择"JSON"&#xff1a;如下图所示&#xff1a; 认证成功与失败…

Linux客户端开发

1 创建socket,返回一个文件描述符cfd---socket(); 2 连接服务端---connect&#xff08;&#xff09;&#xff1b; 3 while&#xff08;1&#xff09; { //发送数据 write //接收数据 read } 4 close(cfd); #include<stdio.h> #include<stdlib.h> #include&…

leetcode 长度最小的子数组

在本题中&#xff0c;我们可以知道&#xff0c;是要求数组中组成和为target的最小子数组的长度。所以&#xff0c;我们肯定可以想到用两层for循环进行遍历&#xff0c;然后枚举所有的结果进行挑选&#xff0c;但这样时间复杂度过高。 我们可以采用滑动窗口&#xff0c;其实就是…

网络编程:TCP机械臂,UDP文件传输

1.TCP机械臂测试 程序代码&#xff1a; 1 #include<myhead.h>2 #define SER_IP "192.168.126.112" //服务器IP3 #define SER_PORT 8888 //服务器端口号4 5 #define CLI_IP "192.168.126.121" //客户端IP6 #define CLI_PORT 9999 //…

C++ 第三方boost库 windows编译

网址 https://levelup.gitconnected.com/the-definite-guide-on-compiling-and-linking-boost-c-libraries-for-visual-studio-projects-c79464d7282d https://www.boost.org/ 安装 下载boost源码包 解压到本地 打开vs命令行 进入当前目录&#xff0c;执行编译&#xff0…

vs 设置项目依赖的cmake 版本

cmake_minimum_required(VERSION 3.16) cmakelist.txt 这句话都不陌生&#xff0c; 设置依赖的最低cmake版本 可是当电脑上装了好几种版本的cmake&#xff0c; 并且每个项目依赖的版本都不同 以及需要vs 可视化界面编译时 找不到地方设置&#xff08;找了两次 没找到 百度也…

【论文阅读】TensoRF: Tensorial Radiance Fields 张量辐射场

发表于ECCV2022. 论文地址&#xff1a;https://arxiv.org/abs/2203.09517 源码地址&#xff1a;https://github.com/apchenstu/TensoRF 项目地址&#xff1a;https://apchenstu.github.io/TensoRF/ 摘要 本文提出了TensoRF&#xff0c;一种建模和重建辐射场的新方法。不同于Ne…

matlab:涉及复杂函数图像的交点求解

matlab&#xff1a;涉及复杂函数图像的交点求解 在MATLAB中求解两个图像的交点是一个常见的需求。本文将通过一个示例&#xff0c;展示如何求解两个图像的交点&#xff0c;并提供相应的MATLAB代码。 画出图像 首先&#xff0c;我们需要绘制两个图像&#xff0c;以便直观地看…