核心提示:虽然我们可以使用原生路由,但是中间件的使用更为方便和普遍。简介先安装koa-router中间件。npm install --save koa-router新建文件demo06.js ,代码如下。con...
       虽然我们可以使用原生路由,但是中间件的使用更为方便和普遍。
简介
先安装koa-router中间件。
npm install --save koa-router
新建文件demo06.js ,代码如下。
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();
router.get('/', function (ctx, next) {
    ctx.body="Hello Koa";
})
router.get('/todo',(ctx,next)=>{
    ctx.body="Todo page"
});
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000,()=>{
  console.log('starting at port 3000');
});
执行node demo06.js,打开https://localhost:3000/ 可以看到Hello Koa,打开https://localhost:3000/todo 可以看到Todo page ,使用其他路由地址会出现Not Found 。
这样我们就使用中间件简单实现了路由。
这里用到了get请求,get请求会在下一篇细讲,allowedMethods()就是保证接受的是GET请求,当客户端发送POST请求时,就会直接返回失败。
多层路由
新建demo07.js文件,代码如下:
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
//子路由1
let home = new Router();
home.get('/home', async(ctx)=>{
    ctx.body="Hello /home/home/";
});
home.get('/todo',async(ctx)=>{
    ctx.body="Hello /home/todo/";
});
//子路由2 
let page = new Router();
page.get('/home', async(ctx)=>{
    ctx.body="Hello /page/home/";
});
page.get('/todo',async(ctx)=>{
    ctx.body="Hello /page/todo/";
});
//父级路由
let router = new Router();
router.use('/home',home.routes(),home.allowedMethods());
router.use('/page',page.routes(),page.allowedMethods());
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000,()=>{
  console.log('starting at port 3000');
});
通过上面代码的方法,先设置子类路由,再设置父类路由。
执行node demo07.js 打开https://localhost:3000/page/todo会显示 Hello /page/todo/ 。打开https://localhost:3000/home/todo会显示 Hello /home/todo/。
这样就可以根据自己的需求,设计不同层次的路由了。



 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                