技术文档

koa教程(三):koa-router路由

2018-08-17  本文已影响643人  SuperGino

安装

npm install koa-router

简单例子

var Koa = require('koa');
var Router = require('koa-router');
 
var app = new Koa();
var router = new Router();
 
router.get('/', (ctx, next) => {
  // ctx.router available
});
 
app
  .use(router.routes())  //作用:启动路由
  .use(router.allowedMethods());  // 作用: 这是官方文档的推荐用法,我们可以看到router.allowedMethods()用在了路由匹配router.routes()之后,所以在当所有路由中间件最后调用.此时根据ctx.status设置response响应头

匹配动态路由,比如http://127.0.0.1:3000/users/123,要获取到后面的123参数,就要使用:id来匹配

router.get('user', '/users/:id', (ctx, next) => {
 // ... id = 123
});

// 多个参数
router.get('/:category/:title', (ctx, next) => {
  console.log(ctx.params);
  // => { category: 'programming', title: 'how-to-node' }
});

多重路由写法

router.get(
  '/users/:id',
  (ctx, next) => {
     console.log(ctx);
      next();
    });
  },
  ctx => {
    console.log(ctx);
  }
);

往往大型商业项目,路由路径非常多,直接写在app.js,会显得比较入口文件臃肿,这个时候就需要路由分拆。

建立多个路由配置文件 router1-3.js,文件内容大致如下

const Router = require('koa-router')

const router = new Router()

router.get('/', async (ctx, next) => {
  ctx.body = 'router_xx';
  next();
})

module.exports = router.routes()

建立总路由配置文件 router.js,用他关联其他模块的路由

const Router = require('koa-router')
const router1 = require('../routes/router1')
const router2 = require('../routes/router2')
const router3 = require('../routes/router3')

var router = new Router()
// router.prefix =  '/api';

router.use('/test', router1);
router.use('/test2', router2);
router.use('/test3', router3);

module.exports = router

在app.js里面启动总路由

const router = require('./myApp/config/router')

app
  .use(router.routes())
  .use(router.allowedMethods());
上一篇下一篇

猜你喜欢

热点阅读