文章目录
- 🟢 Express
- ⭐️ 1.初始Express
- ✨安装
- ✨使用Express 搭建一台服务器
- ⭐️2.Express-基本路由
- ✨1.使用字符串模式的路由路径示例:
- ✨2.使用正则表达式的路由路径示例:
- ✨3.中间件浅试(demo)
- ⭐️3.Express-中间件
- ✨1.应用级中间件
- ✨2.路由级中间件
- ✨3.错误处理中间件
- ✨4.内置的中间件
- ✨5.第三方中间件
- ⭐️4. Express--获取请求参数
- ✨1.get
- ✨2.post
- ⭐️5. Express-- 托管静态文件
- 📌持续更新中
- ✒️总结
🟢 Express
Express
基于 Node.js 平台,快速、开放、极简的 web 开发框架。Express 是 Node.js 最受欢迎的 Web 应用框架之一。它提供了简洁而灵活的方式来构建 Web 服务器和 API。Express 提供了一组强大的工具和功能,使得开发 Web 应用变得简单而高效。
⭐️ 1.初始Express
- Web 应用
Express 是一个基于 Nodejs 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。 - API
丰富的 HTTP 快捷方法和任意排列组合的 Connect 中间件,让你创建健、友好的API 变得既快速又简单。 - 性能
Express 不对 Node,js 已有的特性进行二次抽象,我们只是在它之上扩展了 Web 应用所需的基本功能。
✨安装
npm install express --save
✨使用Express 搭建一台服务器
index.js
const express=require(`express`)
// 导入express
const app=express()
app.get("/",(req,res)=>{res.write("hello express")res.end()
})
app.listen(5200,()=>{console.log("Server start")
})
send()
直接返回字符
app.get("/send",(req,res)=>{res.send("hello express-send")
})
返回html片段,可以看到直接解析
app.get("/send",(req,res)=>{res.send(`<h1>hello express-send</h1>`)
})
返回json数据·
app.get("/send",(req,res)=>{res.send({name:`初见`,age:23})
})
⭐️2.Express-基本路由
路由是指如何定义应用的端点(URIs)以及如何响应客户端的请求。
路由是由一个 URI、HTTP 请求(GET、POST等)和若干个句柄组成,它的结构如下:app.METHOD(path, [callback…], callback), app 是 express 对象的一个实例, METHOD 是一个HTTP 请求方法, path 是服务器上的路径, callback 是当路由匹配时要执行的函数。下面是一个基本的路由示例
var express = require('express');
var app = express();
// respond with "hello world" when a GET request is made to the homepage
app.get('/', function(req, res) {
res.send('hello world');
});
路由路径和请求方法一起定义了请求的端点,它可以是字符串、字符串模式或者正则表达式。
// 匹配根路径的请求
app.get('/', function (req, res) {
res.send('root');
});
// 匹配 /about 路径的请求
app.get('/about', function (req, res) {
res.send('about');
});
// 匹配 /random.text 路径的请求
app.get('/random.text', function (req, res) {
res.send('random.text');
});
✨1.使用字符串模式的路由路径示例:
// 匹配 acd 和 abcd
app.get('/ab?cd', function(req, res) {
res.send('ab?cd');
});
// 匹配 /ab/******
app.get('/ab/:id', function(req, res) {
res.send('aaaaaaa');
});
// 匹配 abcd、abbcd、abbbcd等
app.get('/ab+cd', function(req, res) {
res.send('ab+cd');
});
// 匹配 abcd、abxcd、abRABDOMcd、ab123cd等
app.get('/ab*cd', function(req, res) {
res.send('ab*cd');
});
// 匹配 /abe 和 /abcde
app.get('/ab(cd)?e', function(req, res) {
res.send('ab(cd)?e');
});
下面就一个一个尝试一下
- /ab?cd可以匹配 acd 和 abcd
//?前面的b可选,可以有也可以没有
app.get("/ab?cd", (req, res) => {res.send("ab?cd 匹配 acd 和 abcd")
});
- /ab/:id匹配/ab/******(常用于详情页,向后端传个id)
// 匹配 /ab/****** :也就是占位符的意思
app.get('/ab/:id', function(req, res) {res.send('/ab/:id匹配/ab/******');
});
- ab+cd匹配 abcd、abbcd、abbbcd等
// 匹配 abcd、abbcd、abbbcd等
//+前面的b可以重复n个
app.get('/ab+cd', function(req, res) {res.send('ab+cd匹配 abcd、abbcd、abbbcd等');
});
- ab*cd匹配 abcd、abxcd、abRABDOMcd、ab123cd等
// 匹配 abcd、abxcd、abRABDOMcd、ab123cd等
//*可匹配任意字符或任意多个字符
app.get(&#