koa

239 阅读1分钟

koa get/post请求

//index.js
const app = new Koa()
const bodyparser = require('koa-bodyparser')//post
const json = require('koa-json')//get
// middlewares---post
app.use(bodyparser({
  enableTypes:['json', 'form', 'text']
}))
// middlewares---
app.use(json())
router.js
const router=require('koa-router')()
//get
router.get('/list', async function (ctx, next) {
    let author = ctx.query.author || ''
    const keyword = ctx.query.keyword || ''
    })
    ctx.body = {
    title: 'koa2 json'
  }
  })
  
  //post 
router.prefix('/api/user')
router.post('/login', async function(ctx,next){
const { username, password }=ctx.request.body 
ctx.body ={ 
   errno: 0,  
   username, 
   password
})

module.exports=router

中间件

形式:app.use()

session

使用:koa-generic-session和koa-redis

  • sessionID存入到cookie中默认格式为:"koa:session":sessionID

image.png

  • 通过中间件ctx.session.** 往当前redis缓存的sessionID到存入缓存内容,比如写username/realname
  • req.session.viewNum=0
  • req.session.username = data.username
  • req.session.realname = data.realname
const Koa = require('koa');
const app = new Koa();
const session = require('koa-generic-session')
const redisStore = require('koa-redis')
 
app.keys = ['WJiol#23123_'];  //session的密码

//sessionID存入到cookie中格式为:"koa:session":sessionID
//通过中间件ctx.session.** 往redis缓存到写入内容,比如写username/realname
// -req.session.username = data.username
 // -req.session.realname = data.realname
app.use(session({
   // key: 'session-blog.sid',          //浏览器 cookie 的名字
   // prefix: 'session-blog:sess:',     //redis key 的前缀
    cookie: {
        path: '/',
        httpOnly: true,
        maxAge: 24 * 60 * 60 * 1000
    },
    store: redisStore({         //redis的储存
        all: '127.0.0.1:6379'
    })
}))
 
 //ctx.session.** 往redis缓存到写入内容
//一个简单的计数器返回,访问 http://localhost:3000 每次数字都会 +1
app.use(async (ctx, next) => {
    const session = ctx.session
     if (session.viewNum == null) {
         session.viewNum = 0
    }
     session.viewNum++

    res.json({
        viewNum: session.viewNum
     })
})
 
app.listen(3000);

image.png