koa2框架

本文介绍了Koa2框架,它是基于Node.js的Web服务器框架,提供高效的async/await语法处理web服务器。文章详细阐述了框架与库的区别,并讲解了Koa2的中间件机制,包括中间件的概念、作用、如何使用中间件进行业务代码拆分和扩展。此外,还介绍了如何搭建Koa2环境、处理HTTP请求,以及模拟登录验证功能的中间件实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

框架frame:

1.框架的作用:

封装原生代码的API;规范流程和格式;让开发人员更加关注与业务代码,提高开发效率。

2.框架frame和lib库的区别:
框架是唯一的,库可以共存;框架关注全流程,库关注单个功能。

koa2

介绍:koa2是nodejs web server 框架;

 通过async/await语法高效编写web server;

koa2的中间件机制,能合理拆分业务代码。

官网和文档Koa (koajs) -- 基于 Node.js 平台的下一代 web 开发框架 | Koajs 中文文档

安装koa2: npm i koa --save (我们要安装包时,养成去npmjs.com搜索的好习惯)

koa2环境搭建:

实际项目,不会从0搭建koa2环境,我们可以使用脚手架koa-generator创建koa2项目。(类比vue-cli),因此我们还需安装脚手架koa-generator :npm i koa-generator;

通过 控制台输入 koa2 test4(文件名) 创建koa2项目;

通过 npm run dev 启动项目(如果报错如下,则可能是Nodejs的版本太高,可以卸载原来的nodejs,下载低版本的nodejs)

koa2处理http请求

如何接收数据和返回数据:(模拟留言板的liangge)

const router = require("koa-router")()
router.prefix("/api")

// koa2处理http请求

router.get('/list',async ctx => {
    // 获取queryString
    const query = ctx.query;
    console.log('query',query)
    
    // 返回的response
    ctx.body = {
        errno: 0,
        data: [
            {user: "张三", content: "今天天气真好"},
            {user: "李四", content: "今天天气还行"},
            {user: "王五", content: "今天天气不好"},
        ]
    }
})

router.post('/create', async ctx => {
    const query = ctx.query;
    console.log(query);
    // 获取request发送过来的数据
    const body = ctx.request.body;
    console.log("body",body)
    ctx.body = {
        errno: 0,
        message: "请求已经收到啦"
    }
})

module.exports = router

中间件

1)什么是中间件? 为何使用中间件?

中间件是什么:

中间件是一个流程上,独立的业务模块;

可扩展,可插拔;

类似于工厂流水线。

为何使用中间件:

使用中间件拆分业务模块,使代码清晰;

统一使用中间件,使得各业务代码都规范标准;

扩展性好,易添加,易删除。

2)koa2中间件

koa2业务代码都是中间件;

每个中间件都是一个async函数,async函数的第一个参数都是ctx,第二个参数是next

所有的app.use(...)都是中间件;(所有的请求都会经过使用app.use注册的中间件)

路由也是中间件(只不过限制了url规则,只有满足路由规则的才会经过路由中间件)

中间件机制:(一个http请求会依照下面的顺序经过中间件)

中间件机制是koa2的精髓;

3)模拟登录验证功能(演示怎么使用中间件)

1.加入所有的接口(路由)都需要登录校验:

2.假如只有一部分接口,需要登录校验

koa2洋葱圈模型:

 洋葱圈模型和中间件模型的关系(两者要分开来看,不要混在一起):

中间件机制:业务模块的划分;

洋葱圈模型:中间件的执行机制;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值