koa2笔记

作者: 处在水深火热的iOS_林龙 | 来源:发表于2018-09-20 15:08 被阅读0次

    运行环境:Linux
    工具:docker,node,npm

    使用docker是为了解决微服务化且为了不影响到本地的其他环境。通过docker来编写demo是最直接最方便的方法。

    docker 环境配置

    获取node镜像
    docker pull node
    创建node容器
    docker run -i -t --name koa2 -p 8000:8000 node /bin/bash
    可以参考docker笔记

    创建koa2项目

    创建目录及打开
    mkdir koa2 && cd koa2
    npm创建及拉取koa库
    npm init && npm install koa
    创建入口文件
    touch index.js

    编辑koa2项目

    vi index.js

    var koa = require("koa")     //导入koa库
    var app = new koa()           // 创建koa实例
    
    app.use(async (ctx)=>{      
        let url = ctx.url;                                  //请求url
        let request = ctx.request;                          //请求头参数
        let req_query = ctx.query;                         //请求url参数
        let req_querystring = ctx.querystring;            //请求url参数字符串
         ctx.body = {                                     //请求响应
                  url,
                  request,
                  req_query,
                  req_querystring
          }
    })
    app.listen(8000,()=>{                                 //监听端口,成功回调
            console.log("this is hello koa")
    });
    

    运行项目
    node index.js

    post获取post方法中的参数

    1.自己编写获取post 参数

    var koa = require("koa")     //导入koa库
    var app = new koa()           // 创建koa实例
    
    app.use(async (ctx)=>{      
           if (ctx.method === "get"){
                 ctx.body="this is get method"
          }else{
                  let postData = await parsePostData(ctx)
                 ctx.body=postData
          }
    })
    
    function parsePostData(ctx){
            return new Promise((res,rej)=>{
                    try{
                            let postData="";
                            ctx.req.on("data",(data)=>{
                                    postData += data;
                            });
                            ctx.req.addListener("end",()=>{
                                    res(postData)
                            })
                    }catch(err){
                            rej(err)
                    }
            })
    }
    app.listen(8000,()=>{                                 //监听端口,成功回调
            console.log("this is hello koa")
    });
    

    2.框架
    npm install koa-bodyparser

    var koa = require("koa")     //导入koa库
    var bodyparser =  require('koa-bodyparser')
    
    var app = new koa()           // 创建koa实例
    app.use(bodyparser())
    
    app.use(async (ctx)=>{      
           if (ctx.method === "get"){
                 ctx.body="this is get method"
          }else{
                  let postData = ctx.request.body
                 ctx.body=postData
          }
    })
    app.listen(8000,()=>{                                 //监听端口,成功回调
            console.log("this is hello koa")
    });
    

    router

    npm install koa-router

    var koa = require("koa")
    var bodyparser =  require('koa-bodyparser')
    var Router = require("koa-router")
    
    var app = new koa()
    var router = new Router()
    
    router.get('/',(ctx,next)=>{
            ctx.body = "this is /"
    })
    
    router.get("/sleep",(ctx,next)=>{
            ctx.body = "this is /sleep"
    })
    
    
    app.use(bodyparser())
    app.use(router.routes())
       .use(router.allowedMethods());
    app.listen(8000,()=>{
            console.log("koa2 start")
    })
    

    cookies

    var koa = require("koa")
    var bodyparser =  require('koa-bodyparser')
    var Router = require("koa-router")
    
    var app = new koa()
    var router = new Router()
    
    router.get('/',(ctx,next)=>{
            ctx.cookies.set("xxxx","zzzzz")
            ctx.body = "setCookies"
    })
    
    router.get("/getCookies",(ctx,next)=>{
            ctx.body = ctx.cookies.get("xxxx")
    })
    
    
    app.use(bodyparser())
    app.use(router.routes())
       .use(router.allowedMethods());
    app.listen(8000,()=>{
            console.log("koa2 start")
    })
    

    相关文章

      网友评论

        本文标题:koa2笔记

        本文链接:https://www.haomeiwen.com/subject/wfqnnftx.html