Express子应用程序以及创建模块路由
2022-03-29 本文已影响0人
听书先生
- 子应用程序与主应用程序:
express模块每一次执行都会创建一个应用,而每一个子应用都会通过use的方法挂载到主应用上。
需要注意的是:只有主应用程序能挂载端口号,因为每一个子应用挂载端口的话,无法找到入口程序
1、创建子应用程序game.js和user.js
// 游戏部分的中间件
const express = require('express');
const game = express();
game.use('/', (req, res, next) => {
res.send('/game')
})
module.exports = game;
// 用户部分的中间件
const express = require('express');
const user = express();
user.use('/', (req, res, next) => {
res.send('/user')
})
module.exports = user;
2、创建一个主入口程序
const express = require("express");
const app = express();
const game = require("./app/game.js");
const user = require("./app/user.js");
app.use('/game', game);
app.use('/user', user);
app.use((err, req, res, next) => {
res.status(500).send(`页面异常.`); // 如果请求返回的状态码为500,那么抛出错误
})
app.listen(3000, () => console.log('http://localhost:3000'))
-
express的路由:
路由是指的接收用户请求,处理用户数据,返回结果给用户的一套程序,核心就是URL;
Router路由模块化:
express.Router类可以创建模块化,可以挂载路由对象.
创建game游戏模块(先创建一个routes文件目录,routes下存放的则是你的路由模块,比如:你有游戏模块game以及用户模块user,则可以创建gameRouter.js和userRouter.js文件)
gameRouter.js:
const express = require("express");
const gameRouter = express.Router();
const game = require('./game/game.js')
// 游戏模块路由
gameRouter.post('/', game.addGame);
gameRouter.delete('/:uid', game.deleteGame);
gameRouter.delete('/', game.deleteAllGame);
gameRouter.put('/', game.putGame);
gameRouter.get('/:uid', game.qryGame);
gameRouter.get('/', game.qryAllGame);
module.exports = gameRouter;
我们将game模块下所有的接口数据均放在一个game.js文件中,这样便于模块化管理
game.js代码:
// 所有game模块的接口数据
const game = {
// 新增游戏名称
addGame: (req, res) => {
res.send('新增了一个游戏')
},
// 1. 删除单个
deleteGame: (req, res) => {
let {
uid
} = req.params;
res.send(`删除${uid}游戏名称`)
},
// 2. 删除所有
deleteAllGame: (req, res) => {
res.send(`删除所有的游戏名称`)
},
// 修改游戏名称
putGame: (req, res) => {
res.send(`修改游戏名称`)
},
// 查询
// 1. 查询某一个的详情
qryGame: (req, res) => {
let {
uid
} = req.params;
res.send(`查询${uid}游戏名称`)
},
// 2. 查询所有数据
qryAllGame: (req, res) => {
res.send(`查询所有的游戏名称`)
},
};
module.exports = game;
最后我们在主程序模块导入gameRouter
模块
const express = require("express");
const app = express();
const gameRouter = require("./routes/gameRouter.js");
app.use('/game', gameRouter);
app.use((err, req, res, next) => {
res.status(500).send(`页面异常.`); // 如果请求返回的状态码为500,那么抛出错误
})
app.listen(3000, () => console.log('http://localhost:3000'))
路由模块化对于非常多且复杂的业务逻辑时处理起来是非常简洁的。
接口测试:
图2.png
图3png