Appearance
koa-router
简介
koa-router 是 Koa 的一个强大的路由中间件,它提供了完整的路由功能,支持请求方法、URL 参数、嵌套路由等特性,使得 API 的开发更加灵活和直观。
安装
bash
npm install @koa/router基本使用
javascript
const Koa = require('koa');
const Router = require('@koa/router');
const app = new Koa();
const router = new Router();
// 基本路由
router.get('/', ctx => {
ctx.body = 'Hello World';
});
// 带参数的路由
router.get('/users/:id', ctx => {
ctx.body = `User ${ctx.params.id}`;
});
// 注册路由中间件
app.use(router.routes());
app.use(router.allowedMethods());高级特性
1. 路由前缀
javascript
const router = new Router({
prefix: '/api'
});2. 多层嵌套路由
javascript
const userRouter = new Router({
prefix: '/users'
});
userRouter
.get('/', ctx => { /* 获取用户列表 */ })
.post('/', ctx => { /* 创建新用户 */ })
.get('/:id', ctx => { /* 获取特定用户 */ });
// 嵌套路由
router.use(userRouter.routes(), userRouter.allowedMethods());3. 路由中间件
javascript
const auth = async (ctx, next) => {
if (!ctx.state.user) {
ctx.status = 401;
return;
}
await next();
};
router.get('/protected', auth, ctx => {
ctx.body = '受保护的资源';
});4. 命名路由
javascript
router.get('user', '/users/:id', ctx => {
ctx.body = `User ${ctx.params.id}`;
});
// 生成 URL
router.url('user', { id: 3 }); // => "/users/3"5. 多种请求方法
javascript
router
.get('/users', ctx => { /* GET 请求处理 */ })
.post('/users', ctx => { /* POST 请求处理 */ })
.put('/users/:id', ctx => { /* PUT 请求处理 */ })
.delete('/users/:id', ctx => { /* DELETE 请求处理 */ });6. 路由组
javascript
router.use('/admin', adminAuth, adminRouter.routes());配置选项
prefix: 路由前缀methods: 支持的 HTTP 方法sensitive: 区分大小写,默认 falsestrict: 严格模式,默认 falserouterPath: 自定义路由路径
注意事项
- 总是在路由注册后使用
allowedMethods()中间件 - 合理使用路由前缀和嵌套路由组织代码结构
- 注意路由的注册顺序,更具体的路由应该放在前面
- 适当使用中间件来处理通用逻辑
- 使用命名路由可以更方便地维护 URL
- 正确处理路由错误,提供友好的错误响应
- 考虑使用路由中间件进行权限控制和参数验证