首页 > 其他分享 >koa2

koa2

时间:2023-12-30 16:11:40浏览次数:27  
标签:const 中间件 ctx content koa2 routes

  • koa2 是什么

    koa2 是 nodejs web server 框架

    框架(frame)和库(lib)的区别:框架是唯一的,库是可以共存的,框架关注全流程(如 Vue、React等),库关注单个功能(如 lodash 等)

  • 使用 koa2 处理 http请求

    我们新增两个接口(获取评论列表和新增评论)

//路径:koa-demo/routes/comment.js

const router = require('koa-router')()

router.prefix('/comment')

//处理get请求,获取请求列表
router.get('/list', async (ctx, next) => {
    const queryObj = ctx.query;
    ctx.body = {
        errno: 0,
        data:[
            {id: 1, user: "zhangsan", content: "张三留的言"},
            {id: 2, user: "lisi", content: "李四留的言"},
            {id: 3, user: "wangwu", content: "王五留的言"},
            {id: 4, user: "zhaoliu", content: "赵六留的言"},
            {id: 5, user: "tianqi", content: "田七留的言"},
            {id: 6, user: "sunba", content: "孙八留的言"},
            {id: 7, user: "laojiu", content: "老九留的言"},
        ],
        msg: `这是查看留言列表接口!共有${queryObj.number}条留言`
    }
})

//处理post请求,新增留言
router.post('/create', async (ctx, next) => {
    const bodyObj = ctx.request.body;
    ctx.body = `这是新增留言接口!您的留言内容是:“${bodyObj.content}”`
})

module.exports = router

 

  同时需要修改 app.js ,新建路由并注册

// 路径:koa-demo/app.js

//新建路由
const index = require('./routes/index')
const users = require('./routes/users')
const comment = require('./routes/comment')

//注册路由 routes
app.use(index.routes(), index.allowedMethods())
app.use(users.routes(), users.allowedMethods())
app.use(comment.routes(),comment.allowedMethods())

 

  • koa2 中间件

    中间件是流程上独立的业务模块,可以扩展,可以插拔,类似工厂上的流水线

    koa2 中的所有业务代码都是中间件

    app.use() 是 koa 用来加载中间件的方法

    路由也是中间件,但对 url 规则做了限制,只有符合 url 规则的请求,才会进路由中间件

  • 使用 中间件模拟登录验证功能
// 登录校验中间件
// 只有 username 和 password 都符合的才能进行 http 请求
app.use(async (ctx, next) => { const queryObj = ctx.request.query; //登录失败 if(queryObj.username !== 'zhangsan' || queryObj.password !== '123456'){ ctx.body = { errno: 1, msg: "登录失败", }; return; } //登陆成功 await next(); })

 

  • koa2 洋葱圈模型

    中间件机制是 koa2 的精髓,每个中间件都是 async 函数,中间件的机制运行就像洋葱圈

  

    顺序是:进入A → 进入B → 进入C → 离开C → 离开B → 离开A

 

标签:const,中间件,ctx,content,koa2,routes
From: https://www.cnblogs.com/geol4/p/17936487.html

相关文章

  • Node.js+Express+Koa2开发接口学习笔记(三)
    数据库操作(创建和增删查)使用Navicat快速创建myblog数据库创建表使用navicat快速建表使用sql语句进行简单的查询--showtables;--显示该数据库中的所有表INSERTINTOusers(username,`password`,realname)VALUES('zhangsan','123','张三')INSERTINTOusers(......
  • Koa2 中后台返回字段由下划线改为驼峰的中间件
    //toHump.jsconsttoHump=async(ctx,next)=>{ctx.write=(obj)=>ctx.body=toHumpFun(obj)awaitnext()}functiontoHumpFun(obj){constresult=Array.isArray(obj)?[]:{}for(constkeyinobj){if(obj.hasOwnPr......
  • NodeJS分别实现token、cookie登录注册鉴权(KOA2)
    源码https://github.com/NaCl-131/node-study.git包npminstallkoanpminodemon-D#保存自动更新npmikoa-router#路由npmikoa-body#解析post的传参npmimysql2sequelize#mysql和一个ORM工具npmijsonwebtoken#JWTnpmidotenv#.env文件npmikoa-sess......
  • 在Koa2中,ctx.request.body和ctx.query的主要区别
    在Koa2中,ctx.request.body和ctx.query的主要区别在于获取参数的位置不同。ctx.query用于获取URL查询参数,而ctx.request.body用于获取请求体中的参数。下面是详细的区别和示例代码。获取URL查询参数URL查询参数是指在URL中以?开头,&连接的键值对参数。例如,以下URL中的查询参数为nam......
  • nodejs+koa2+mongodb 从0到1搭建自己的项目
    nodejs+koa2+mongodb从0到1搭建自己的项目YDJFE2018-09-2811:2419207   相信这对于想要入门写nodejs的朋友来说,一定会有所收获,那么,下面开始我们的正题(这里不使用koa-generator脚手架,我们直接自己搭建项目,适用于前后端分离)一:创建项目可以在全局中安装koa依赖包......
  • Node.js+Express+Koa2开发接口学习笔记(二)
    搭建开发环境从0开始搭建,不适用任何框架使用nodemon监测文件变化,自动重启node使用cross-env设置环境变量,兼容maxlinux和windows创建项目文件夹blog-1,在终端输入命令npminit-y在根目录下创建bin=>www.js文件,将初次运行的文件www.js存放在bin目录下。同时需要修改pack......
  • Node.js+Express+Koa2开发接口学习笔记(一)
    http请求概述浏览器输入一个地址后,进行DNS解析(通过域名查找对应的IP地址),与server建立TCP连接(进行三次握手),发送http请求server接收到http请求,处理,并返回客户端(这里指浏览器)接收到返回数据,处理数据(如渲染页面,执行js)客户端与服务器的三次握手大致可以理解为:第一次握手:客......
  • Koa2
    1、全局安装脚手架工具cnpmi-gkoa-generator或yarnglobaladdkoa-generator  2、创建项目koa2manager-server 3、安装依赖cnpminstall或npminstall或yarn  4、启动服务 yarnstart或node.bin/www  5、使用pm2部署koa项目,并实现启动、......
  • koa2 中建表方法
    需求,在model层新建商品表一.在model目录下新建goods.model.jsconst{DataTypes}=require('sequelize')constseq=require('../db/seq')constGoods=seq.define('zd_goods',{goods_name:{type:DataTypes.STRING,allo......
  • koa2 中 参数做校验
    1.安装 koa-parameternpminstallkoa-parameter--save2.在路由处理之前调用app.use(parameter(app))在app文件夹下,index.js中调用例如 三.使用(在middleware层做校验)ctx.verifyParams({goods_name:{type:'string',required:true},goods_price......