首页 > 其他 > 详细

koa-middleware

时间:2021-06-22 09:21:10      阅读:27      评论:0      收藏:0      [点我收藏+]

1、应用级中间件

var Koa = require(koa)
var router = require(koa-router)()
var app = new Koa()

//Koa中间件
//两个参数则第一个表示匹配对应的路由,第二个参数为async;只有一个参数表示匹配所有路由。
app.use(async (ctx)=>{
    ctx.body = 这是一个中间件
})
app.use(async (ctx, next)=>{
    console.log(new Date())
    await next()     //当前路由匹配完成后继续向下匹配
    //匹配任何路由,如果不写next,这个路由被匹配到了就不会继续向下匹配
})


app
    .use(router.routes())  //启动路由
    .use(router.allowedMethods()) 

app.listen(3000)

2、路由级中间件

var Koa = require(koa)
var router = require(koa-router)()
var app = new Koa()


router.get(/, async (ctx)=>{
    ctx.body = 首页
})
// router.get(‘/news‘, async (ctx)=>{
//     console.log(‘这是一个新闻‘)   //匹配到一个路由若没有响应则会出错
// })
router.get(/news, async (ctx, next)=>{
    console.log(这是一个新闻)
    await next()
})
router.get(/news, async (ctx)=>{
    ctx.body = 新闻页面
})


app
    .use(router.routes())  //启动路由
    .use(router.allowedMethods()) 

app.listen(3000)

3、错误处理级中间件

var Koa = require(koa)
var router = require(koa-router)()
var app = new Koa()


router.get(/, async (ctx)=>{
    ctx.body = 首页
})

router.get(/news, async (ctx, next)=>{
    console.log(这是一个新闻)
    await next()
})
router.get(/news, async (ctx)=>{
    ctx.body = 新闻页面
})

//无论放在哪儿,都先执行这个,然后再执行next匹配下一个路由
//www.域名.com/xxx匹配不到,则返回到此执行if语句
//无论如何都会最后都会返回执行if
//洋葱模型
app.use(async (ctx, next)=>{  
    console.log(这是一个中间件01)  
    next()
    
    if(ctx.status == 404){
        ctx.status = 404
        ctx.body = 这是一个404页面
    }
})


app
    .use(router.routes())  //启动路由
    .use(router.allowedMethods()) 

app.listen(3000)

 

koa-middleware

原文:https://www.cnblogs.com/zjqzilq/p/14916188.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!