鞠彗云 发表于 2025-12-24 16:50:01

koa学习

koa

hello world

const Koa = require('koa')

const app = new Koa()


app.listen(8000,()=>{
console.log('koa server success')
})中间件:只能通过use来注册中间件

// 中间件
app.use((ctx,next)=>{
console.log('koa 普通中间件')
ctx.response.body = 'hello koa middleware'

next()
})路由使用 koa-router

安装 npm install koa-router

创建路由文件 routers/users.js

//routers/users.js
const Router = require('koa-router')
const router = new Router({prefix:'/users'})

// 用户列表接口 /users/lists

router.get('/lists',(ctx, next) => {
ctx.response.body = 'user lists'
})

module.exports = router引入路由,注册路由

const Koa = require('koa')

const userRouter = require('./routers/user')

const app = new Koa()

//使用路由
app.use(userRouter.routes())
// 处理405和501错误
app.use(userRouter.allowedMethods())


app.listen(8000,()=>{
console.log('koa server success')
})参数解析

params 和 query

const router = require('koa-router')

const userRouter = new router({prefix:'/users'})

userRouter.get('/:id', (ctx,next)=>{
console.log('获取params参数', ctx.params)
console.log('获取query参数', ctx.query)
ctx.response.body = 'user id:'+ctx.params.id
})

app.use(userRouter.routes())

//请求路径 /users/yyy?username=yyy&password=123456Aa
//打印内容
//获取params参数 { id: 'yyy' }
//获取query参数 { username: 'yyy', password: '123456Aa' }json 和 urlencoded

安装第三方插件 koa-bodyparser'

npm install koa-bodyparser'
引入插件,自动解析json和urlencoded参数

const bodyParser = require('koa-bodyparser')

app.use(bodyParser())

app.use((ctx,next)=>{
   
    console.log('请求体参数', ctx.request.body)
    ctx.response.body = 'requset body parser'

})form-data 参数解析

安装koa-multer插件

npm install koa-multer
引入,注册插件

`
const multer = require('koa-multer')
const upload = multer()
loginRouter.post('/', upload.any(), (ctx,next)=>{
console.log('form-data 数据', ctx.req.body) // 注意是在ctx.req.body中获取解析数据
ctx.response.body = 'login success'
})
`
文件上传

const multer = require('koa-multer')


const storage = multer.diskStorage({
    // 文件保存路径
    destination: function (req, file, cb) {
      cb(null, './uploads/')
    },
    // 修改文件名称
    filename: function (req, file, cb) {
      console.log('file', file)
      // 使用更安全的方式生成文件名
      const filename = Date.now() + '-' + Math.round(Math.random() * 1E9) + file.originalname
      cb(null, filename)
    }
})

const upload = multer({storage: storage})

uploadRouter.post('/image', upload.single('file'), (ctx,next)=>{

    ctx.response.body = 'upload success'
})部署静态资源

安装插件 npm install koa-static

部署

const staticAssets= require('koa-static')
app.use(staticAssets(__dirname + '/public')) // 接收静态资源目录
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

倘伟 发表于 2025-12-25 06:11:21

收藏一下   不知道什么时候能用到

揉幽递 发表于 2025-12-25 17:13:23

感谢,下载保存了

痕厄 发表于 2025-12-28 02:39:25

这个有用。

痨砖 发表于 2026-1-14 06:48:21

不错,里面软件多更新就更好了

莅耸 发表于 2026-1-18 08:29:37

东西不错很实用谢谢分享

米榜饴 发表于 2026-1-18 12:26:29

不错,里面软件多更新就更好了

劳暄美 发表于 2026-1-19 04:15:05

谢谢分享,辛苦了

纪睐讦 发表于 2026-1-19 15:13:48

东西不错很实用谢谢分享

夔新梅 发表于 2026-1-22 20:07:12

感谢发布原创作品,程序园因你更精彩

贺蛟亡 发表于 2026-1-23 09:17:50

yyds。多谢分享

施婉秀 发表于 2026-1-26 04:10:37

分享、互助 让互联网精神温暖你我

阎一禾 发表于 2026-1-26 08:25:20

感谢分享,学习下。

粒浊 发表于 2026-1-29 03:07:25

感谢分享,下载保存了,貌似很强大

福清婉 发表于 2026-1-30 02:58:00

过来提前占个楼

痨砖 发表于 2026-2-4 07:13:06

这个有用。

缍米 发表于 2026-2-7 22:47:23

鼓励转贴优秀软件安全工具和文档!

怃膝镁 发表于 2026-2-8 04:01:08

这个有用。

马璞玉 发表于 2026-2-8 04:36:20

谢谢楼主提供!

穆望 发表于 2026-2-8 07:21:32

前排留名,哈哈哈
页: [1] 2
查看完整版本: koa学习