本文使用图片上传展示koa中间件框架的基本流程,省去前端编码,直接使用httpie模拟文件上传,测试KoaKoa中间件按照编码顺序在栈中执行顺序(先进后出),允许您执行操作并向下(下游)传递请求,然后以相反的顺序(上游)过滤和返回响应。前端人员可以将next()之前的任何代码视为“捕获”阶段,下面的gif说明了异步函数如何正确地利用堆栈流来处理请求和响应流。当中间件(MiddlewareFunctionwithsignature(ctx,next))运行时,它必须手动调用next()来运行“下游”中间件。上传代码图片,需要指定上传路径(第5步),在web端访问和展示图片,需要开启静态资源服务(第1步)constlogger=require("koa-logger")constserve=require("koa-static")constkoaBody=require("koa-body")constKoa=require('koa')constfs=require("fs")constapp=newKoa()constos=require("os")constpath=require("path")app.use(logger())//使用文件上传中间件app.use(koaBody({multipart:true}))//1.静态资源服务,指定外部访问的根目录app.use(serve(path.join(__dirname,'/public')));app.use(asyncfunction(ctx,next){awaitnext()if(ctx.body||!ctx.idempotent)returnctx.response.body='
你好,koa2!
不上传照片
'})//2.文件上传app.use(asyncfunction(ctx,next){if('POST'!=ctx.method)returnawaitnext()//获取图像源//