【Nodejs】六、express框架

ops/2024/9/25 8:34:39/

目录

express%20%E4%BB%8B%E7%BB%8D-toc" style="margin-left:0px;">一、express 介绍

express%20%E4%BD%BF%E7%94%A8-toc" style="margin-left:0px;">二、express 使用

express%20%E4%B8%8B%E8%BD%BD-toc" style="margin-left:40px;">2.1 express 下载

express%20%E4%BD%BF%E7%94%A8-toc" style="margin-left:40px;">2.2 express 使用

express%20%E8%B7%AF%E7%94%B1-toc" style="margin-left:0px;">三、express 路由

3.1 什么是路由

3.2 路由的使用

3.3 获取请求参数

3.4 获取路由参数

express%20%E5%93%8D%E5%BA%94%E8%AE%BE%E7%BD%AE-toc" style="margin-left:0px;">四、express 响应设置

express%20%E4%B8%AD%E9%97%B4%E4%BB%B6-toc" style="margin-left:0px;">五、express 中间件

5.1 什么是中间件

5.2 中间件的作用

5.3 中间件的类型

5.4 定义全局中间件

5.5 定义路由中间件

5.6 静态资源中间件


express%20%E4%BB%8B%E7%BB%8D">一、express 介绍

express 是一个基于 Node.js 平台的极简、灵活的 WEB 应用开发框架,官方网址: https://www.expressjs. com.cn/
简单来说, express 是一个封装好的工具包,封装了很多功能,便于我们开发 WEB 应用( HTTP 服务)

express%20%E4%BD%BF%E7%94%A8">二、express 使用

express%20%E4%B8%8B%E8%BD%BD">2.1 express 下载

express 本身是一个 npm 包,所以可以通过 npm 安装
npm init
npm i express

express%20%E4%BD%BF%E7%94%A8">2.2 express 使用

1. 创建 JS 文件
//1. 导入 express
const express = require('express');
//2. 创建应用对象
const app = express();
//3. 创建路由规则
app.get('/home', (req, res) => {
res.end('hello express server');
});
//4. 监听端口 启动服务
app.listen(3000, () =>{
console.log('服务已经启动, 端口监听为 3000...');
});
2. 命令行下运行
node <文件名>
# 或者
nodemon <文件名>
3. 然后在浏览器就可以访问 http://127.0.0.1:3000/home 👌

express%20%E8%B7%AF%E7%94%B1">三、express 路由

3.1 什么是路由

官方定义: 路由确定了应用程序如何响应客户端对特定端点的请求

3.2 路由的使用

一个路由的组成有 请求方法 路径 回调函数 组成
express 中提供了一系列方法,可以很方便的使用路由,使用格式如下:
//导入 express
const express = require('express');
//创建应用对象
const app = express();
//创建 get 路由
app.get('/home', (req, res) => {
res.send('网站首页');
});
//首页路由
app.get('/', (req,res) => {
res.send('我才是真正的首页');
});
//创建 post 路由
app.post('/login', (req, res) => {
res.send('登录成功');
});
//匹配所有的请求方法
app.all('/search', (req, res) => {
res.send('1 秒钟为您找到相关结果约 100,000,000 个');
});
//自定义 404 路由
app.all("*", (req, res) => {
res.send('<h1>404 Not Found</h1>')
});
//监听端口 启动服务
app.listen(3000, () =>{
console.log('服务已经启动, 端口监听为 3000');
});

3.3 获取请求参数

express 框架封装了一些 API 来方便获取请求报文中的数据,并且兼容原生 HTTP 模块的获取方式
//导入 express
const express = require('express');
//创建应用对象
const app = express();
//获取请求的路由规则
app.get('/request', (req, res) => {
//1. 获取报文的方式与原生 HTTP 获取方式是兼容的
console.log(req.method);
console.log(req.url);
console.log(req.httpVersion);
console.log(req.headers);
//2. express 独有的获取报文的方式
//获取查询字符串
console.log(req.query); // 『相对重要』
// 获取指定的请求头
console.log(req.get('host'));
res.send('请求报文的获取');
});
//启动服务
app.listen(3000, () => {
console.log('启动成功....')
})

3.4 获取路由参数

路由参数指的是 URL 路径中的参数(数据)
app.get('/:id.html', (req, res) => {
res.send('商品详情, 商品 id 为' + req.params.id);
});

express%20%E5%93%8D%E5%BA%94%E8%AE%BE%E7%BD%AE">四、express 响应设置

//获取请求的路由规则
app.get("/response", (req, res) => {
//1. express 中设置响应的方式兼容 HTTP 模块的方式
res.statusCode = 404;
res.statusMessage = 'xxx';
res.setHeader('abc','xyz');
res.write('响应体');
res.end('xxx');
//2. express 的响应方法
res.status(500); //设置响应状态码
res.set('xxx','yyy');//设置响应头
res.send('中文响应不乱码');//设置响应体
//连贯操作
res.status(404).set('xxx','yyy').send('你好朋友')
//3. 其他响应
res.redirect('http://atguigu.com')//重定向
res.download('./package.json');//下载响应
res.json();//响应 JSON
res.sendFile(__dirname + '/home.html') //响应文件内容
});

express%20%E4%B8%AD%E9%97%B4%E4%BB%B6">五、express 中间件

5.1 什么是中间件

中间件( Middleware )本质是一个回调函数
中间件函数 可以像路由回调一样访问 请求对象( request 响应对象( response

5.2 中间件的作用

中间件的作用 就是 使用函数封装公共操作,简化代码

5.3 中间件的类型

全局中间件
路由中间件

5.4 定义全局中间件

每一个请求 到达服务端之后 都会执行全局中间件函数
声明中间件函数
let recordMiddleware = function(request,response,next){
//实现功能代码
//.....
//执行next函数(当如果希望执行完中间件函数之后,仍然继续执行路由中的回调函数,必须调用next)
next();
}
应用中间件
app.use(recordMiddleware);
声明时可以直接将匿名函数传递给 use
app.use(function (request, response, next) {
console.log('定义第一个中间件');
next();
})

5.5 定义路由中间件

app.get('/路径',`中间件函数`,(request,response)=>{
});
app.get('/路径',`中间件函数1`,`中间件函数2`,(request,response)=>{
})

5.6 静态资源中间件

express 内置处理静态资源的中间件
//引入express框架
const express = require('express');
//创建服务对象
const app = express();
//静态资源中间件的设置,将当前文件夹下的public目录作为网站的根目录
app.use(express.static('./public')); //当然这个目录中都是一些静态资源
//如果访问的内容经常变化,还是需要设置路由
//但是,在这里有一个问题,如果public目录下有index.html文件,单独也有index.html的路由,
//则谁书写在前,优先执行谁
app.get('/index.html',(request,response)=>{
respsonse.send('首页');
});
//监听端口
app.listen(3000,()=>{
console.log('3000 端口启动....');
});


http://www.ppmy.cn/ops/95009.html

相关文章

抓包分析排查利器TCPdump

tcpdump命令介绍与常规用法。 基础命令介绍 # 固定语法 -i 指定网卡名称 -nn 显示IP地址 -w 指定输出的文件名称 tcpdump -i eth0 -nn -w test.cap-nn 不把主机的网络地址与协议转换成名字 -w 把数据包数据写入指定的文件 and 连接参数 host 指明主机 port 指明端口 src 源IP…

Unity透视镜透视效果——Shader

一、效果示意图 二、透视的过程 要看的效果&#xff1a;【相机】借助【球体】&#xff0c;透过【圆柱】看到【红色的方块】 三、实现原理-Shader 借助shader&#xff0c;两个挂有特殊shader的物体&#xff0c;当他们在视线里重叠的时候&#xff0c;重叠的部分变成透明。 …

SpringAOP 面向切面编程

** Spring有两大核心特性&#xff1a;IOC(控制反转) 和 AOP(面向切面编程)&#xff0c;但是 相比IOC在日常工作中的广泛应用&#xff0c;AOP却常常做了冷板凳&#xff0c;下面我从工作中的场景为大家打开AOP面向切面编程的大门。** 什么是AOP? 在软件业&#xff0c;AOP为Asp…

0815,析构函数,拷贝构造函数,赋值运算符函数

来自同济医院的问候 目录 01&#xff1a;对象创建 001.cc 003size.cc 02&#xff1a;对象销毁 004pointer.cc 005destroytime.cc 03&#xff1a;本类型对象的复制 3.1 拷贝构造函数 006cp.cc 007cptime.cc 008recursion.cc 009rightleft.cc 3.2 赋值运算符函数 …

jar包在linux无法直接获取resources文件夹下的文件

windows下&#xff0c;通过hutool的FileUtil.file()就可以获取到文件&#xff0c;通过MailUtil.send()将邮件带附件的方式成功&#xff0c;携带附件发邮件。 linux下部署&#xff0c;截图中的FileUtil.file()是拿不到文件的&#xff0c;报IOException while sending message&a…

[论文笔记]ZeRO: Memory Optimizations Toward Training Trillion Parameter Models

引言 今天带来ZeRO: Memory Optimizations Toward Training Trillion Parameter Models的论文笔记。 大型深度模型提供了显著的准确性提升&#xff0c;但训练数十亿到数万亿个参数是具有挑战性的。现有的解决方案&#xff0c;如数据并行和模型并行&#xff0c;存在基本的局限…

drools规则引擎 规则配置文件drl语法使用案例

前提&#xff1a;环境搭建&#xff0c;参考博文springboot整合drools规则引擎 示例入门-CSDN博客案例1&#xff0c;商城系统消费赠送积分 100元以下, 不加分 100元-500元 加100分 500元-1000元 加500分 1000元 以上 加1000分订单pojo编写 package cn.beijing.model;import lom…

【Py/Java/C++三种语言详解】LeetCode743、网络延迟时间【单源最短路问题Djikstra算法】

可上 欧弟OJ系统 练习华子OD、大厂真题 绿色聊天软件戳 od1441了解算法冲刺训练&#xff08;备注【CSDN】否则不通过&#xff09; 文章目录 相关推荐阅读一、题目描述二、题目解析三、参考代码PythonJavaC 时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 相关推荐阅读 …