Node 内置模块 【http模块】

news2024/12/24 8:30:08

文章目录

  • 🌟前言
  • 🌟http模块
    • 🌟 1.引入http模块
    • 🌟 2.创建服务
    • 🌟 3.添加头信息
    • 🌟 4.搭建一个简单的服务器:
    • 🌟 5.Request对象
    • 🌟 6.Response对象
    • 🌟 7.练习:发送时间到客户端
    • 🌟 8.练习:HTTP多次响应
    • 🌟 9.练习:静态服务器
    • 🌟 10.练习:ajax之get
    • 🌟 11.练习:ajax之post
    • 🌟 12.练习:ajax上传图片
  • 🌟写在最后

在这里插入图片描述

🌟前言

哈喽小伙伴们,新的专栏 Node 已开启;这个专栏里边会收录一些Node的基础知识和项目实战;今天带领大家初识一下 Node内置模块 http 模块;让我们一起来看看吧🤘

🌟http模块

🌟 1.引入http模块

let http = require("http");

🌟 2.创建服务

let server = http.createServer(function(req,res){
    res.end();
})
server.listen(8000,()=>{})

🌟 3.添加头信息

响应的信息,告诉浏览器内容的类型,用什么方式去解析

res.writeHead(200,{
    'Content-type':'text/html;utf8'
})

🌟 4.搭建一个简单的服务器:

//导入http模块
var http = require('http');
//创建一个http服务器
var server = http.createServer(function (req,res) {//req请求 res响应
    res.write('hello'); //向客户的发送数据 只能为字符串或Buffer
    res.write('world');//向客户的发送数据
    res.end();//发送结束
})
server.listen(8080); //监听指定端口号

🌟 5.Request对象

属性描述
request.url客户端请求的url地址,如http://127.0.0.1/hello/world,那么request.url就是/hello/world
request.headers客户端请求的http header
request.method获取请求的方式,一般有几个选项,POST,GET和DELETE等,服务器可以根据客户端的不同请求方法进行不同的处理。

🌟 6.Response对象

属性描述
res.writeHeadresponse.writeHead(statusCode, [reasonPhrase], [headers]) res.writeHead(200,{Content-Type:‘text/plain’});
res.removeHeader(“Date”)从隐式发送的队列中移除一个响应头。
res.setTimeout(msecs, callback)设置http超时返回的时间,一旦超过了设定时间,连接就会被丢弃
res.statusCode设置返回的网页状态码
res.setHeader(name, value)设置http协议头
res.headersSent返回一个布尔值(只读)。 如果响应头已被发送则为 true,否则为 false。
res.write(chunk, [encoding])返回的网页数据,[encoding] 默认是 utf-8
res.end([data], [encoding])将设置的数据包,发送数据到客户端(完成响应)。

🌟 7.练习:发送时间到客户端

var http = require('http');
http.createServer(function (req,res) {
    var d = new Date();
    res.write(d.toString())
    res.end();
}).listen(9000);

🌟 8.练习:HTTP多次响应

var http = require('http');
http.createServer(function (req,res) {
    res.setHeader('Content-type','text/html,charset=utf-8');
    res.write('你好,世界');
    setTimeout(function () {
        res.write('我不好,人类');
        res.end();
    },2000)

}).listen(9000);

🌟 9.练习:静态服务器

var http = require('http');
var fs = require('fs');
var path = require('path');
var mime = require('mime');
http.createServer(function (req,res) {
        var url = req.url;
        console.log(url)
        if(url=='/'){url='index.html'};
        res.setHeader('Content-type',mime.lookup(url)+';charset=utf-8');
        fs.readFile('./'+url,'utf8',function (err,data) {
            res.write(data);
            res.end();
        })

}).listen(9001);

🌟 10.练习:ajax之get

//导入核心模块
var http = require("http");
var fs = require("fs");
var url = require("url");

//模拟数据
var data  = [
    "你每天都很困,只因为你被生活所困",
    "每天都在用六位数的密码,保护着两位数的存款",
    "年纪越大,越没有人会原谅你的穷",
    "全世界都在催你早点,却没人在意你,还没吃'早点'",
    "小时候总骗爸妈自己没钱了,现在总骗爸妈,没事~我还有钱"
];

//创建服务器
var server = http.createServer(function(req,res){
    var urlObj = url.parse(req.url,true);
    if(req.url"/"||req.url"/index.html"){
        fs.readFile("./index.html",function(err,data){
            res.write(data);
            res.end();
        })
    }
    if(urlObj.pathname=="/search"){
        var d = data.filter((val,index)=>{
            return val.indexOf(urlObj.query.s)==-1?false:true;
        });
        res.write(JSON.stringify(d));
        res.end();
    }
})

//监听服务器
server.listen(3000);

🌟 11.练习:ajax之post

//引入核心模块
var http = require('http');
//引用URL解析URL参数
var url = require('url');
//读写文件
var fs = require('fs');
var querystring = require('querystring');
//创建http服务器
//只有当提交form表单,并且是GET请求的时候,浏览器才会把表单进行序列化拼到URL后面
http.createServer(function(req,res){
    //一定会返回一个对象
    // true的话urlObj的query也会是一个对象,否则就是一个字符串
   // username=zfpx&password=123 -> {username:'zfpx',password:123}
    var urlObj = url.parse(req.url,true);
    //路径名
    var pathname = urlObj.pathname;
    if(pathname == '/'){
        //读取文件的内容
        fs.readFile('./index.html','utf8',function(err,data){
                res.end(data);
        })
    }else if(pathname == '/reg'){
        var result='';
        //当读到客户端提交过来的数据时会触发data事件,然后调用回调函数
        req.on('data',function(data){
            result +=data;
        })
        req.on('end',function(data){
            var contentType = req.headers['content-type'];
            if(contentType =='application/x-www-form-urlencoded'){
                var obj = querystring.parse(result);
                console.log(obj);
            }else if(contentType == 'application/json'){
                var obj  = JSON.parse(result);
                console.log(obj);
            }
            res.end('ok');
        })
    }else if(pathname == '/reg2'){
        res.end('ok2');
    }
}).listen(8080);

🌟 12.练习:ajax上传图片

使用第三方包 formidable

var http = require('http');
var url = require('url');
var fs = require('fs');
var formidable = require('formidable');
var querystring = require('querystring');
var util  = require('util');
var mime  = require('mime');

// 构建一个解析器
var formParser = new formidable.IncomingForm();
///用解析器解析请求体
//把非file的input放在fields里
//把文件类型的元素放在files里
formParser.parse(req, function(err, fields, files) {
   fs.readFile(files.avatar.path,function(err,data){
       console.log(files.avatar);
       var filename = '/imgs/'+files.avatar.name;
       fs.writeFile('.'+filename,data,function(err){
           res.writeHead(200,{'Content-Type':'text/plain'});
           res.end(filename);
       })
   })
});

🌟写在最后

更多Node知识以及API请大家持续关注,尽请期待。各位小伙伴让我们 let’s be prepared at all times!

✨原创不易,还希望各位大佬支持一下!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!

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

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

相关文章

Mac 安装Java反编译工具JD-GUI

一、下载JD-GUI软件 1.首先到Github下载JD-GUI软件: github java-decompiler/jd-gui Public 选择jd-gui-osx-1.6.6.tar. 2.解压打开软件,但是提示错误: 3.确保本机已安装JDK. 4.如果确定已经安装了JDK海报这个这个错误,选中JD…

Ubuntu由于没有公钥,无法验证下列签名: NO_PUBKEY 79CDFD222CD3495A

执行update时,打印几行错误信息: sudo apt-get update命中:3 https://deb.termius.com squeeze InRelease 错误:3 https://deb.termius.com squeeze InRelease 由于没有公钥,无法验证下列签名: NO_PUBKEY 79CDFD222CD3495A W: 校…

海量数据的交互式分析工具Dremel

海量数据的交互式分析工具Dremel 产生背景数据模型两方面的技术支撑面向记录和面向列的存储嵌套模型的形式化定义 嵌套式的列存储数据的无损表示重复深度的定义定义深度的定义 高效的数据编码(了解)数据重组 查询语言与执行(了解)…

易点易动设备管理系统帮助水泥厂实现智能设备巡检

着工业4.0的不断发展,智能制造成为企业追求的目标。水泥厂作为基础建设的重要产业,其生产过程中设备的巡检维护显得尤为重要。本文介绍了易点易动设备管理系统如何帮助水泥厂实现智能设备巡检,提高设备管理效率,降低维修成本&…

卫浴工厂如何通过电子作业指导书系统实现信息化管理?

电子作业指导书系统可以帮助卫浴工厂实现信息化管理和智能化生产。电子作业指导书系统可以与其他管理系统和设备进行数据共享和信息交换,从而实现生产过程的智能化和自动化。 电子作业指导书系统是一种指导工人操作的电子化工具,可以将工艺流程、操作规范…

你的企业是不是需要一个wiki维基网页呢?

随着科技的不断发展和企业的不断壮大,企业内部的知识管理变得愈发重要。而wiki维基网页正是一种非常有效的知识管理工具,可以帮助企业更好地管理、分享和利用内部知识。 企业需要一个wiki维基网页的原因有哪些? 提高信息共享效率 在传统的…

WEB 工程路径专题--base 标签的使用和建议示意图

目录 WEB 工程路径专题 工程路径解决方案 解决方案:相对路径 2. 相对路径带来的问题举例 > 示意图 解决方案:base 标签 base 基本介绍 base 应用实例 a.html b.html Servlet03.java 练习 login.HTML user.html WEB 工程路径注意事项和细…

Storm proxies动态代理IP怎么挑选海外代理IP?

在选择海外代理IP时,需要考虑以下几个因素: 代理IP的稳定性和速度:代理IP的稳定性和速度是影响代理效果的重要因素。需要选择一个稳定、速度较快的代理IP,以确保能够快速、稳定地访问目标网站。代理IP的位置和数量:需要…

Node 内置模块 【fs模块】

文章目录 🌟前言🌟fs模块🌟 使用fs模块🌟 异步编程和同步编程🌟 异步编程🌟 同步编程 🌟常用操作🌟 文件操作🌟 readFile异步读取文件🌟 readFileSync同步读取…

OPencv图像读取_显示_保存

OPencv图像读取_显示_保存 一.OpenCV图像处理系统组成: OpenCV 主体分为五个模块,分别为CV、MLL,HighGUI、CXCORE,CVAux。OpenCV 的 CV 模块包含基本的图像处理函数和高级的计算机视觉算法。ML 是机器学习库,包含一些基于统计的…

哪个品牌的洗地机更好用?热门洗地机盘点

洗地机没有使用过之前一直怀疑是不是智商税,等到后面体验过之后,发现是真的香。因为不可否认的是,洗地机的清洁力还是不错的。不仅能够快速清洁干净地面,大大的节省了我们的清洁用时,操作起来也省心省力。作为一个洗地…

智驾系统的设计瓶颈之:电源管理设计中的功能安全和状态机

摘要: 本文从智驾系统电源管理设计的角度详细分析了整个系统的电源设计方式。 在整车电源管理中,IC 需要将多轨降压、升压和 LDO 稳压功能与每个电轨的参数,以及与其他电轨间交互的复杂可配置能力整合在一起。对于智驾系统设计人员而言&…

Python中类的属性、多继承、自省机制中的__mro__、__dict__ 和dir介绍

一、通过类名修改属性和通过类的实例去修改类的属性的区别 在 Python 中,类的属性可以通过类名或类的实例访问和修改。但是,通过类名修改属性和通过类的实例修改属性之间有一些区别。通过类名修改属性实际上是修改类的属性。这意味着如果你修改了类的属性…

GrapeCity Documents for Word 6.1.0

GrapeCity Documents for Word 6.1.0 改进了聚合函数中多个表达式的使用。 特征 GcWord 模板: 现在可以使用表达式作为聚合函数的参数。表达式可以在函数中使用常量、聚合或两个集合。现在可以进行以下计算: 使用常量 - {{ calc Sum(2 ds.value)}}。在聚…

5.MapReduce概述

ps.实际生产环境中并不会使用mapReduce,而是spark和flink,但是它可以建立分布式的思想。 1.MapReduce框架 2.mapReduce小项目练习 ps.基本流程:一般都是在代码层面引入hadoop依赖,然后在windows环境下进行代码编写测试,没有问题的话,把代码打包成jar包,然后拖入xShell,利用…

基于单片机的电路特性测试仪的设计

摘 要 当今社会科技的飞速发展,智能和便捷已经成为人们的日常诉求。现在放大电路在使用过程中经常出现故障,并且需要测试电路数据,但是大多数是手动进行测试,一定程度上影响了工作效率。 为了测量数据更安全更便捷,针…

YOLOv8 更换主干网络之 GhostNetV2

《GhostNetV2:Enhance Cheap Operation with Long-Range Attention》 轻量级卷积神经网络(CNN)是专门为在移动设备上具有更快推理速度的应用而设计的。卷积操作只能捕捉窗口区域内的局部信息,这防止了性能的进一步提高。将自注意力引入卷积可以很好地捕捉全局信息,但这将大…

MySQL-----表的增删查改

文章目录 前言一、create1. 单行数据 全列插入2. 多行数据 指定列插入3. 插入冲突否则更新4. 替换 二、retrieve1. select列1.1 全列查询1.2 指定列查询1.3 查询字段为表达式1.4 为查询结果指定别名1.5 结果去重 2. where条件2.1 英语不及格的同学及英语成绩 ( < 60 )2.2 …

Google浏览器翻译无法正常使用解决

1.查找可用服务器地址 按WinR键打开运行→输入cmd回车&#xff0c;打开命令提示符→输入ping google.cn 回车。记录一下下图红框里的ip地址&#xff0c;一会要用到 最近自己ping出来的ip可能不能用了&#xff0c;可以尝试用下面的ip 142.251.163.90 142.250.113.90 142.251.…

springcloudfeign原理和流程

什么是Feign&#xff1f; Feign 的英文表意为“假装&#xff0c;伪装&#xff0c;变形”&#xff0c; 是一个http请求调用的轻量级框架&#xff0c;可以以Java接口注解的方式调用Http请求&#xff0c;而不用像Java中通过封装HTTP请求报文的方式直接调用。Feign通过处理注解&am…