Kao框架学习

中间件:洋葱模型

Kao框架学习_第1张图片

这是官网上给出的示例,从logger依次往下执行,执行到最底层的response往回退,结构很像同心圆的洋葱从外层向内层再由内层向外层。

next表示暂停当前层的代码进入下一层, 当最后一层执行完毕开始回溯,执行上一层没做完的内容。

 路由中间件

// app.js
const xxxRouter = require("./routes/xxx");
app.use(xxxRouter.routes(), xxxRouter.allowedMethods());

// xxx.js
// 路径前缀是/xxx
const Router = new Router({ prefix: "/xxx" });
xxxRouter.post("/abaaba", async (ctx, next) => {
  let body = ctx.request.body;
  try {
    t = ...
    ctx.body = {
      code: 200,
      msg: "success",
      data: t,
    };
  } catch (e) {
    console.log(e);
    ctx.body = {
      code: 500,
      msg: "请检查参数",
      data: e,
    };
  }
});

xxxRouter.routes() 是一个用于处理路由的中间件,而 xxxRouter.allowedMethods() 是一个用于处理请求方法的中间件。在 Koa 中,路由中间件负责根据不同的 URL 路径将请求分发到不同的处理函数,而请求方法中间件负责根据请求的 HTTP 方法(如 GET、POST 等)确定是否允许该方法的请求。

所以,app.use(xxxRouter.routes(), xxxRouter.allowedMethods()) 这行代码的作用是将 xxxRouter 中定义的路由处理函数与请求方法处理函数绑定到 Koa 应用程序中,以便在收到请求时执行相应的操作。这样,当请求到达时,首先会通过路由中间件进行路径匹配,然后再通过请求方法中间件检查请求的方法是否被允许

请求部分的ctx是request和response的集合,ctx.request.body表示收到的请求体,ctx.body表示要发送的应答体

Body中间件

比起nodejs自带的bodyparser,koa-body还可以支持文件传输,用ctx.request.files.xxx(文件的变量名)来进行接收文件

注意koa-body进行的文件上传是先下载到本地的,如果需要的功能是导入之类的,这个文件用完就没用了,记得及时删除

if (fs.existsSync(filepath)) {
          fs.unlinkSync(filepath);      
          console.log('File deleted!');
        } 

可以同时支持多地址

Kao框架学习_第2张图片

 示例中告诉我们可以同时支持https和http

你可能感兴趣的:(nodejs后端开发,学习)