使用 Express.Router
可以帮助我们更加有效地管理我们的路由逻辑,将不同的路由划分到不同的模块中,使得程序结构更加清晰。下面是使用 Express.Router
的方法:
1. 创建一个 Router 对象
我们首先需要通过 Express.Router()
方法来创建一个新的 Router
对象,然后可以使用 Router
对象上的方法来定义我们的路由逻辑。
// 引入 express 模块
const express = require('express');
// 创建一个 Router 对象
const router = express.Router();
// 定义路由逻辑
router.get('/', (req, res) => {
res.send('Hello, World!');
});
// 导出 Router 对象
module.exports = router;
2. 将 Router 对象挂载到应用程序中
我们需要将创建的 Router
对象挂载到我们的 Express 应用程序中,这样它才能生效。 挂载的方法有两种:通过 app.use()
挂载或者通过 app.use(path, router)
挂载。
通过 app.use() 挂载
可以通过 app.use()
方法将 Router
对象挂载到应用程序中的根路径。
// 引入 express 模块
const express = require('express');
// 引入路由模块
const router = require('./router');
// 创建一个应用程序
const app = express();
// 将路由模块挂载到根路径
app.use(router);
// 启动服务器
app.listen(3000, () => {
console.log('Server is running on port 3000.');
});
通过 app.use(path, router) 挂载
如果我们想将 Router
对象挂载到应用程序中的其他路径上,我们可以使用 app.use(path, router)
方法,其中 path
是我们想要挂载的路径。
// 引入 express 模块
const express = require('express');
// 引入路由模块
const router = require('./router');
// 创建一个应用程序
const app = express();
// 将路由模块挂载到指定路径
app.use('/api', router);
// 启动服务器
app.listen(3000, () => {
console.log('Server is running on port 3000.');
});
这样,我们就可以在访问 http://localhost:3000/api
的时候访问到我们的路由逻辑。
示例说明
下面是两个使用 Express.Router
的示例:
示例 1:用户路由模块
我们可以将用户相关的路由逻辑都放在一个单独的路由模块中,比如 users.js
文件。
// 引入 express 模块
const express = require('express');
// 创建一个 Router 对象
const router = express.Router();
// 定义 GET /users 路由
router.get('/', (req, res) => {
res.send('Get all users');
});
// 定义 GET /users/:id 路由
router.get('/:id', (req, res) => {
const id = req.params.id;
res.send(`Get user with id ${id}`);
});
// 导出 Router 对象
module.exports = router;
然后将路由模块挂载到应用程序中:
// 引入 express 模块
const express = require('express');
// 引入用户路由模块
const usersRouter = require('./routes/users');
// 创建一个应用程序
const app = express();
// 将用户路由模块挂载到 /users 路径下
app.use('/users', usersRouter);
// 启动服务器
app.listen(3000, () => {
console.log('Server is running on port 3000.');
});
示例 2:API 版本管理
我们可以通过 Express.Router
来方便地管理 API 的版本,比如将 /api/v1
的 API 版本路由定义在一个路由模块中,将 /api/v2
的 API 版本路由定义在另一个路由模块中。
// 引入 express 模块
const express = require('express');
// 创建一个 Router 对象
const router = express.Router();
// 定义 GET /api/v1 路由
router.get('/', (req, res) => {
res.send('API version 1');
});
// 导出 Router 对象
module.exports = router;
然后将路由模块挂载到应用程序中:
// 引入 express 模块
const express = require('express');
// 引入路由模块
const apiV1Router = require('./routes/api_v1');
const apiV2Router = require('./routes/api_v2');
// 创建一个应用程序
const app = express();
// 将 /api/v1 路由挂载到 /api/v1 路径下
app.use('/api/v1', apiV1Router);
// 将 /api/v2 路由挂载到 /api/v2 路径下
app.use('/api/v2', apiV2Router);
// 启动服务器
app.listen(3000, () => {
console.log('Server is running on port 3000.');
});
这样,我们就可以通过访问 http://localhost:3000/api/v1
或者 http://localhost:3000/api/v2
来访问我们的 API 版本路由逻辑了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node.js使用Express.Router的方法 - Python技术站