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:'新闻页面'}

 

发布了31 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_38694034/article/details/105249182