NodeJS Express 静态文件、中间件、路由案例

NodeJS Express

Express,构建在Node.js平台上的Web开发框架,通过中间件机制和路由系统简化了HTTP服务器的创建流程。支持快速搭建RESTful API服务,提供模板引擎整合功能,并能够与Azure Functions等云服务平台进行集成。作为MEAN技术栈的核心组件之一,Express是Web开发领域最受欢迎的Node.js框架。

Express 5.0 requires Node.js 18 or higher. 参考文档:https://www.expressjs.com.cn/5x/api.html

初始化项目:npm init -y

安装依赖:npm install express@5.1.0,卸载依赖:npm uninstall express

Express 代码

复制代码
const express = require('express')
const app = express()

// 中间件
const middleware = function (req, res, next) {
    console.log(req.path, "中间件函数.");
    req.time = Date.now()
    next();
}
app.use(middleware);

// 静态文件
const options = {
    dotfiles: 'ignore',
    etag: false,
    extensions: ['htm', 'html', 'png'],
    index: false,
    maxAge: '1d',
    redirect: false,
    setHeaders(res, path, stat) {
        res.set('x-timestamp', Date.now())
    }
};
app.use(express.static('public', options));


// 请求处理
app.get('/', (req, res) => {
    res.send('hello world -> ' + req.time);
})
app.all('/all', function (req, res) {
    res.send('all -> ' + req.time);
});

// admin
const admin = express()
// 当子程序被挂载到父程序时,mount事件被发射
admin.on('mount', (parent) => {
    console.log('Admin Mounted')
    console.log(parent)
})
admin.get('/', (req, res) => {
    console.log(admin.mountpath)
    res.send('Admin Homepage');
})
app.use(['/admin', '/manag*r'], admin)

// 路由
const router = express.Router()
router.get('/info/:id', (req, res, next) => {
    console.log(req.params.id)
    res.send('router. -> ' + req.time);
})
app.use('/user', router)

// 
const port = 3000;
app.listen(port, () => {
    console.log("http server running at http://127.0.0.1:" + port);
})
相关推荐
Dumbness3 天前
一份 JSON 生成增删改查接口,入参清洗漏了什么:Number(" ") 是 0,搜 100% 把 1000 元券也搜出来
node.js·express
大草原的小灰灰3 天前
LLM应用的标准开发框架LangChain(八)- 中间件
python·中间件·langchain
Dumbness6 天前
毕设后台导出 CSV 的 4 个坑:date 字段漏了公式防护,搜索框输入 % 能扫全表
node.js·express
真上帝的左手8 天前
30. 技术专题-‌应用框架组件-关系型数据库-MySQL-Mybatis
数据库·分布式·mysql·中间件·mybatis
9624568 天前
容器 RUNNING,为什么中间件仍不可用?ActiveMQ 与 Kafka/ZooKeeper 恢复实录
中间件·kafka·activemq
真上帝的左手8 天前
30. 技术专题-‌应用框架组件-缓存-Redis
数据库·redis·分布式·缓存·中间件
真上帝的左手8 天前
30. 技术专题-‌应用框架组件-搜索引擎-ES
大数据·分布式·elasticsearch·搜索引擎·中间件
kingx39 天前
BugKu PRA 渗透测试 2(Harry‘s Blog):9 Flag 全链实战复盘
中间件·渗透测试·log4j2·内网渗透·反序列化
Dumbness9 天前
一个手机号验证码登录接口的五个坑:无限发码、无限试码,传个数字就让 Express 进程退出
node.js·express
sun_weitao9 天前
用 FastAPI + MQTT 做一个 ESP32最小化跑通示例
中间件·vue·fastapi