Koa2-项目中的基本应用

news2025/6/5 19:33:32

文章目录

  • 安装配置koa2
    • 配置nodemon,热更新我们的项目
  • 中间件
    • 什么是中间件
    • 👻洋葱模型
    • 路由中间件
  • 连接数据库 - mysql
  • 后端允许跨域
    • 处理请求
      • get
      • post
      • put
      • delete
  • 后续会继续更新

在这里插入图片描述

安装配置koa2

👻安装 koa2

npm i koa2 -s

👻在package.json 配置,当然是在npm init的基础之上

"scripts": {
    "start": "node index.js"
    ...
  },

👻这样就可以 借用 npm run start 来启动

配置nodemon,热更新我们的项目

nodemon详解

npm i nodemon -s

👻在package.json中配置 scripts/start 改为

"scripts": {
    "start": "nodemon index.js"
    ...
  },

中间件

什么是中间件

中间件的本质为一个回调函数,参数包含请求对象、响应对象和执行下一个中间件的函数
koa中间件采用的是洋葱模型、每次执行下一个中间件传入两个参数
ctx: 封装了request和response 的变量
next: 进入下一个要执行的中间件函数

👻洋葱模型

在这里插入图片描述
👻下面的示例代码可以说明这种情况

app.use(async (ctx,next) => {
    console.log(1)
    await next()
    console.log(1)
})
app.use(async (ctx,next) => {
    console.log(2)
    await next()
    console.log(2)
})
app.use(async (ctx,next) => {
    console.log(3)
    await next()
    console.log(3)
})

👻结果如下
在这里插入图片描述

路由中间件

npm i koa-router	-s

👻我们直接给koa-router -s 做迁移(单独的文件夹存放),并对该模块进行切片
新建 Router/index.js

const Router = require('koa-router')
const router =  new Router()
const user = require('./user')
router.use('/user',user.routes(),user.allowedMethods())
// 重定向
router.redirect('/','/user')
module.exports = router

👻新建 Router/user.js

const Router = require("koa-router")
const user = new Router()
user.get('/add',(ctx)=>{
    ctx.body = "添加用户"
})

module.exports = user

👻原本的入口文件 index.js

const koa = require('koa2')
const router = require('./Router')
const { port } = require('./setting')
// 声明一个实例
const app = new koa()

/**
 * router.routers()作用是启动路由
 * router.allowedMethods()允许所有请求方法111
 */
app.use(router.routes(),router.allowedMethods())
app.listen(port, () => {
    console.log("localhost:"+`${port}`)
})

👻以上就完成了路由模块的基本内容

连接数据库 - mysql

👻首先准备好数据库
👻新建连接数据库的代码

const mysql = require('mysql')

const connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : 'xxx',
    database : 'property'
});

connection.connect()

connection.query('select * from user',function(err,results,fileds){
    if(err)throw err
    console.log(results)
})
connection.end()

👻在这里mysql的版本过新的话会出现
Client does not support authentication protocol requested by server; consider upgrading MySQL cli
这是由于mysql版本过高,8版本的用户密码加密规则与以往的不同,可以参考下面的进行更改,加密规则
解决办法

👻我们可以选择连接池进行连接,并进行封装

const mysql = require('mysql')
// 连接池
const pool = mysql.createPool({
    connectionLimit: 10,
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'property'
});

/**
 * 查询操作数据库函数
 * @param sql sql语句
 * @param callback 回调函数
 */
function query(sql, callback) {
    pool.getConnection((err, connection) => {
        if (err) throw err
        connection.query(sql, (err, rows) => {
            callback(err, rows)
            connection.release()
        })
    })
}

module.exports = query

const db = require('../utils/db')
db('select * from user',(err,rows)=>{
    if(err)throw err
    console.log(rows)
})

👻详细内容
mysql包官方文档

后端允许跨域

npm i koa2-cors

👻这个中间件一定要写在路由之前

app.use(cors());
app.use(router.routers(),router.allowMethods());

处理请求

我们暂时都是靠postman模拟发送请求

get

post

处理post请求,需要借助koa-body中间件,koa-body支持解析json,也支持文件解析
在这里安装一下

npm  i  koa-body

index.js 入口文件

const {koaBody} = require('koa-body')
app.use(koaBody());

put

delete

后续会继续更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/334667.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用LCR测试仪测试无线充电系统中的线圈

宽阻抗范围用来表征电感和质量因数– 高精度 DCR 测量– 制造环节快速测量– 大量夹具可供选择智能终端上不断增加新功能,电池寿命成为用户最头痛的问题之一。相比便携式电源和电缆供电而言,无线充电技术因其方便性和多功能性获得了很大的关注&#xff0…

MySQL —— 表的增删查改(一)

目录 表的增删查改(一) 一、create 1. 单行数据全列插入 2. 多行数据指定列插入 3. 插入否则更新 4. 替换 二、Retrieve 1. select列 1. 全列查询 2. 指定列查询 3. 查询字段为表达式 4. 为查询结果指定别名 5. 结果去重 2. where条件 1…

辞旧岁立新年 | 展望前端工程师的2023

「InfoQ 年度技术盘点与展望」是由InfoQ主办的年度技术盘点与展望项目,是 InfoQ 全年最重要的内容选题之一。 近日,字节跳动云原生 PaaS 资深前端工程师黄健受邀参与,分享主题为 《展望前端研发工程师的 2023》 。本文整理自黄健于直播中分享…

中国区注册OpenAI账号,试用ChatGPT指南

OpenAI最近推出ChatGPT,但国内(包括香港)并不支持OpenAI账号注册,多数会提示: OpenAI’s services are not available in your country. 前期准备 科学上网,最好是美国IP(可以购买v屁n&…

(三)循环神经网络RNN之LSTM和GRU

LSTM介绍 LSTM(Long Short Term Memory)是 Hochreater 和 Schmidhuber 在 1997 年提出的一种网络结构,尽管该模型在序列建模上的特性非常突出,但由于当时正是神经网络的下坡期,没有能够引起学术界足够的重视。随着深度学习逐渐发展&#xff…

【数据结构-JAVA】排序

排序在现实生活中的应用可谓相当广泛,比如电商平台中,选购商品时,使用价格排序或是综合排序、高考填报志愿的时候,会参考全国大学排名的情况。下面介绍一些计算机中与排序相关的概念:排序:所谓排序&#xf…

超详细的JAVA高级进阶基础知识03

目录 3. 面向对象高级 - 常用的API 3.1 Object 类 3.1.1 Object 类介绍 3.1.2 Object类的常用方法: 3.1.3 Objects 概述 3.2 Math 类 3.3 System 类 3.3.1 System 类概述 3.3.2 常用方法 3.4 BigDecimal 类 3.4.1 BigDecimal 类概述 3.4.2 BigDecimal 类…

windows 编译 open3d 下

1.安装cmake 快速通道:链接:https://pan.baidu.com/s/1gZYAlGRRj4UVGgaTBaZXjg?pwd1klo 提取码:1klo --来自百度网盘超级会员V4的分享警告不用管编译中成功就是61开始配置 cmake 那时候选的路径glew.libglfw3.libjsoncpp.libOpen3D.libpng.l…

jdk和Android sdk 和 ndk 和 apache-ant环境变量配置

ANDROID_HOMEG:\android-sdk-windowsCLASSPATH.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\lib\rt.jar;%JAVA_HOME%\lib\dt.jar;%ANT_HOME%\libJAVA_HOMEC:\Program Files (x86)\Java\jdk1.8.0_361NDK_HOMEG:\android-ndk-r25cant下载https://www.likecs.com…

win环境安装部署Jenkins

win环境安装部署Jenkins,2022年11月:从2022年 6 月 28 日发布的 Jenkins 2.357 和2022年9 月发布的 LTS 版本开始,Jenkins 需要 Java 11 才能使用,放弃 Java 8,如果用JDK1.8,那么Jenkins版本需要是2.357版本…

ChatGPT逐鹿:谷歌“翻车”,微软抢跑,国内概念股狂飙

2023年开年才一个月,微软、谷歌两大巨头在AI战场就上演了“神仙打架”。 1月里两家公司围绕OpenAI和ChatGPT发布的密集消息余温尚在,2月7日,谷歌就官宣了自家的ChatGPT竞品Bard,并发布演示Demo。2月8日,微软直接上线了…

室内三维地图怎么做的?室内地图怎么做好看?

室内导航、定位中须采用基于建筑平面图生产的室内地图,现有的生产室内地图的方法都是依靠人工去根据建筑平面图使用矢量绘图工具去绘制矢量化的室内地图示意图,然后再去标明具体的区域名称功能或者标注位置点。因此制作室内地图往往都比较耗时&#xff0…

blender基础操作

shiftc:游标回到世界中心 shifta: 添加物体 gx或y或z:沿x轴或y轴或z轴移动 gx加数字:往x轴方向移动几格 rx加度数:绕x轴旋转多少度 分割界面:右键单击间隙,选择verticle tab: 来回切换编辑界面和物体界面&…

下班前几分钟,逮到一个腾讯10年老测试开发,聊过之后大彻大悟...

优秀的人真的是比比皆是,不比不知道,一比吓一跳 老话说的好,这人呐,一单在某个领域鲜有敌手了,就会闲得蛋疼。就在昨天下班的前几分钟认识了一个在阿里工作了 10 年的测试开发,因为本人天赋比较高&#xff…

Nacos 配置管理最佳实践

作者:翼严 Nacos 简介 Nacos 是一个更易于构建云原生应用的微服务基础平台,核心包含动态服务发现,配置管理,服务管理平台。 配置管理是 Nacos 的核心功能,它提供了运行期不重启应用的情况下动态修改配置值的功能。 …

修改Vue项目运行的IP和端口

前言 我们在使用VsCode启动Vue项目的时候,我发现:默认的端口号好像和tomcat一样,默认都是8080,如果8080被占用了,就会使用8081,8082这样的方式以此类推。 那么,我们是否可以像后端一样,通过修改…

MySQL数据库04——索引

索引基础 使用索引的主要原因之一就是提供唯一的字段值。唯一索引强制表中任意两条记录的索引值互不相同。创建唯一索引需要使用UNIQUE关键字。下面通过例题说明创建和使用惟一索引的方法。 创建和使用唯一索引 首先,在MySQL 中创建例题中将要使用的testuni表&…

独立图片服务器有什么突出之处

服务器是网络中非常重要的设施,承载着不同流量的访问,这就要求服务器具有快速的吞吐量、高稳定性和高可靠性。独立图片服务器作为独立服务器的衍生品,在数据利用方面的应用可以为企业在数据处理和分析方面带来一场革命。本文就将介绍独立图片…

windows 重启redis的方法

目录打开本地的文件夹选中文件的路径输入cmd在cmd命令窗口中输入以下的指令指令的内容以及对应的命令含义前言:最近在本地搭建redis环境,突然发现本地的redis启动失败了,使用reids的启动命令也不行,于是找了不少的方法&#xff0c…

windows下Spark环境搭建

一、下载 我的是hadoop3.0.0,下载Hadoop3.0:下载链接 自己选择一个盘,我这里是 D:\software 1、配置Hadoop_HOME环境变量 新建系统变量 2、在Path环境变量,添加 %HADOOP_HOME%\bin3、修改配置文件:在hadoop-3.0.0\etc\hadoop…