Kao框架学习

news/2024/12/29 16:44:23/

中间件:洋葱模型

这是官网上给出的示例,从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!');} 

可以同时支持多地址

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


http://www.ppmy.cn/news/1071750.html

相关文章

h5分享页适配手机电脑

实现思路 通过media媒体查询结合rem继承html文字大小来实现。 快捷插件配置 这里使用了VSCode的px to rem插件。 先在插件市场搜索cssrem下载插件&#xff1b; 配置插件 页面编写流程及适配详情 配置meta h5常用配置信息:<meta name"viewport" content&quo…

Royal TSX 6 Mac多协议远程软件

Royal TSX是一款功能强大的远程桌面管理软件&#xff0c;适用于Mac操作系统。它允许用户通过一个集成的界面来管理和访问多个远程计算机和服务器。 Royal TSX支持多种远程协议&#xff0c;包括RDP、VNC、SSH、Telnet和FTP等&#xff0c;可以方便地连接到Windows、Linux、Mac和其…

执行SQL文件出现【Unknown collation “utf8mb4_0900_ai_ci”】的解决方案

执行SQL文件出现【Unknown collation “utf8mb4_0900_ai_ci”】的解决方案 一、背景描述二、报错原因三、解决方案 一、背景描述 从服务器MySQL中导出数据为SQL执行脚本后&#xff0c;在本地执行导出的SQL脚本。 报错&#xff1a;Unknown collation “utf8mb4_0900_ai_ci” …

ubuntu入门01——windows上直接部署linux(WSL)

win10安装参考如下教程&#xff1a; 旧版 WSL 的手动安装步骤 | Microsoft Learn 说明&#xff1a;该文档是我按如上教程安装使用Ubuntu写的回顾&#xff0c;家人们参考官方教程更妙。 1.启用适用于Linux的wundows子系统 2.启用虚拟机功能 dism.exe /online /enable-feat…

【微信小程序篇】- 多环境(版本)配置

最近自己在尝试使用AIGC写一个小程序&#xff0c;页面、样式、包括交互函数AIGC都能够帮我完成(不过这里有一点问题AIGC的上下文关联性还是有限制&#xff0c;会经常出现对于需求理解跑偏情况&#xff0c;需要不断的重复强调&#xff0c;并纠正错误&#xff0c;才能得到你想要的…

以“迅”防“汛”!5G视频快线筑牢防汛“安全堤”

近期&#xff0c;西安多地突发山洪泥石流灾害。防洪救灾刻不容缓&#xff0c;为进一步做好防汛工作&#xff0c;加强防洪调度监管&#xff0c;切实保障群众的生命财产安全&#xff0c;当地政府管理部门亟需拓展智能化技术&#xff0c;通过人防技防双保障提升防灾救灾应急处置能…

ChatGPT⼊门到精通(4):ChatGPT 为何⽜逼

⼀、通⽤型AI 在我们原始的幻想⾥&#xff0c;AI是基于对海量数据的学习&#xff0c;锻炼出⼀个⽆所不知⽆所不能的模 型&#xff0c;并借助计算机的优势&#xff08;计算速度、并发可能&#xff09;等碾压⼈类。 但我们⽬前的AI&#xff0c;不管是AlphaGo还是图像识别算法&am…

0基础学习VR全景平台篇 第92篇:智慧景区教程

一、上传素材 1.上传全景素材 第一步&#xff1a;进入【素材管理】 第二步&#xff1a;选择【全景图智慧景区】分类 第三步&#xff1a;选择相对景区作品分组&#xff0c;上传全景素材 2.素材标注 第一步&#xff1a;选择上传成功后素材&#xff0c;点击【未标注】 第二步&…