koa 中间件概念及应用

原理:

 

  • koa 实例化对象的use方法中的回调函数,如下面实例中的App.use((ctx,next)=>{}),有ctx,next两个参数。
  • 可以ctx的request,response对象,可以终结相应,只有调用 next() 才会调用下一个中间件,如果没有调用,next方法,            则不能继续下一个中间件

应用:

  •   应用中间件

在请求刚进入服务时,必须执行的函数,可以通过中间件实现

/**
 * 应用级别中间件
 * */
const Koa = require('koa');
const Router = require('koa-router')();
const App = new Koa();

App.use((ctx,next)=>{
    ctx.body = {};
    ctx.body.date = new Date();
    next()
});

Router.get('/',function (ctx,next) {
    ctx.body.content='hello world'
})
Router.get('/news',function (ctx,next) {
    ctx.body.content = "新闻页面"
})
App.use(Router.routes());

App.use(Router.allowedMethods());

App.listen(3000,()=>{
    console.log('queck start at port 3000')
})

  •  路由中间件

      在某个请求前进行一些操作

/**
 * 应用级别中间件
 * */
const Koa = require('koa');
const Router = require('koa-router')();
const App = new Koa();


Router.get('/',function (ctx,next) {
    ctx.body ={};
    console.log('请求了/');
    next();
})
Router.get('/news',function (ctx,next) {
    ctx.body ={};
    console.log('请求了/news');
    next();
})

Router.get('/',function (ctx,next) {
    ctx.body.content='hello world'
})
Router.get('/news',function (ctx,next) {
    ctx.body.content = "新闻页面"
})
App.use(Router.routes());

App.use(Router.allowedMethods());

App.listen(3000,()=>{
    console.log('queck start at port 3000')
})

访问 http://localhost:3000             '请求了/'               {content:'hello world'}

访问 http://localhost:3000/news             '请求了/news'               {content:'新闻页面'}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值