koa2 note

GET请求

query和queryString区别

**query:**返回的是格式化好的参数对象
**queryString:**返回的是请求字符串

获取方式
  1. 我们可以通过request对象获取
  2. 我们执行通过context上下文对象获取
const koa=require('koa');
const app=new koa();

app.use(async(ctx)=>{
    let url=ctx.url;
    //方式一获取query
    let request=ctx.request;
    let req_query=request.query;
    let req_queryString=request.querystring;
    //方式二获取query
    req_query=ctx.query;
    req_queryString=ctx.querystring;
    ctx.body={
        url,
        req_query,
        req_queryString
    }
})
app.listen(3000,()=>{
    console.log('server is starting at port 3000');
});

POST请求

context中request和req区别

  • context.reqeust是Koa2中context经过封装的请求对象
  • context.req是context提供的node.js原生HTTP请求对象,虽然不是很直观,但可以过去更多请求信息。

获取Post请求参数:

  1. 解析上下文ctx的原生nodeJS对象req
  2. 将POST数据解析成queryString形式(例如:user=‘cc’&age=‘20’)
  3. 将字符串转换成JSON
//将post请求参数 转换成字符串
//输出结结果形式:userName=sdf&age=sfd
 function parsePostData(ctx){
    return new Promise((resolve,reject)=>{
        try {
            let postData='';
            ctx.req.on('data',data=>{
                postData+=data;
            })
            ctx.req.addListener('end',function(){
                resolve(postData);
            })
        } catch (error) {
            reject(error);
        }
    })
}
/**
 * 功能:将字符串解析JSON对象
 * queryStr: userName=sdf&age=sfd
 * 功能解析: 
 * 1. 首先将上面字符串 & 分割后["userName=sdf", "age=sfd"]
 * 2. 遍历数组 将数组中元素在 =分割
*/
//将字符串换换成JSON
function parseQueryStr(querystr){
    let queryData={};
    let queryStrList=querystr.split('&');
    console.log(queryStrList);
    // for(let [index,querystr] of queryStrList.entries()){
    //     let itemList=querystr.split('=');
    //     queryData[itemList[0]]=decodeURIComponent(itemList[1])
    // }
    queryStrList.forEach(item => {
        let itemList=item.split('=');
        queryData[itemList[0]]=decodeURIComponent(itemList[1]);
    });
    return queryData;
}

采用中间件获取post参数

koa-body-parser

npm install koa-bodyparser --save

该中间件将koa2上下文的数据解析到context.request.body中。
使用

  • 引入

    const bodyParser=require(‘koa-bodyparser’);

  • 注册

    app.use(bodyParser())

  • 使用

ctx.body=ctx.request.body

koa-router

npm install koa-router --save

基本使用

const Koa=require('koa');
const Router=require('koa-router');
const app=new Koa();
const router=new Router();
router.get('/',(ctx,next)=>{
    ctx.body='hello cc'
})
app.use(router.routes())
.use(router.allowedMethods());
app.listen(3000,()=>{
    console.log('starting at port 3000');
})

设置前缀
比如原来的路径是 http://localhost:3000/,页面会打印 hello cc, 现在我们需要路径 http://localhost:3000/cc 打印信息。

const router=new Router({
    prefix:'cc'
})

写入与读取Cookie

  • context.cookies.get(name,[options]):读取上下文请求中的cookie
  • context.cookies.set(name,value,[options]):在上下文中写入cookie
//设置cookie
ctx.cookies.set(
    'MyName', 'cc', {
        domain: 'localhost', //写cookie所在的域名
        // path: '/index', //写cookie所在的路径
        maxAge: 1000 * 60 * 60*24, //cookie有效时长
        expires: new Date('2019-1-29'), //cookie失效时间
        httpOnly: false, //是否只用于http请求中获取
        overwrite: false //是否允许重写
    }
);
//读取cookie
if (ctx.cookies.get('MyName')) {
    ctx.body = ctx.cookies.get('MyName');
} else {
    ctx.body = 'Cookie is none';
}

参考链接:学习技术胖的一些笔记总结
koa-logger: 用于打印日志

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值