1、koa的安装,get和post方法的基础使用

koa是干什么:koa是用来解决回调嵌套的方案,减少异步回调,提高代码的可读性和可维护性同时也改进了错误处理( Express的错误处理相当糟糕)

koa相比express的优点在哪里
1、更加优雅简单的中间机制
2、更加优雅简单的异步处理
3、更加优雅简单的编程方式

一、安装和使用koa
1、检查node版本,低于7.6是不支持的。
查找node安装位置命令行 : where node
2、选择需要安装或操作的文件夹, npm init -y 生成.json文件
npm i --save koa

二、get请求的接收
在koa2中 get请求通过 request 接收 ,接收方法分别是:query 和 qureystring
query : 返回的是格式化好的参数对象,
querystring :返回的是请求的字符串

案例:
新建一个 index.js 的文件

const Koa = require(‘koa‘)
const app = new Koa()

app.use(async(ctx)=>{
    let ctxx = ctx
    let url = ctx.url

    //1、从require 里面获取 query 和 querystring
    let request = ctx.request
    let a_query = request.query
    let a_querystring = request.querystring

    //2、从上下文直接获取 query 和 querystring
    let b_query = ctx.query
    let b_querystring = ctx.querystring

    ctx.body={
        url,
        a_query,
        a_querystring,
        b_query,
        b_querystring
    }
})

app.listen(3000,()=>{
    console.log("OK")
})

三、post接收和解析
用户是GET请求时,通过表单来模拟POTS请求提交并解析

const Koa = require(‘koa‘);
const app = new Koa();
app.use(async(ctx)=>{
    //用户是get请求时,显示表单
    if(ctx.url==="/" && ctx.method==="GET"){
        //get请求创建表单
        ctx.body = `
            <h1>koa2</h1>
            <form method="POST" action="/">
                <p>userName</p>
                <input type="text" name="userName"/>
                <p>age</p>
                <input tpye="text" name="age"/>
                <button type="submit">提交</button>
            </form>
        `
    }else if(ctx.url==="/" && ctx.method==="POST"){
        //post请求打印
        let postdatas = await parsePostData(ctx)
        ctx.body = postdatas
    }else{
        //其他请求显示404
        ctx.body=`
            <h1>404</h1>
        `
    }
});

//解析node原生POST参数
function parsePostData(ctx){
    return new Promise((resolve,reject)=>{
        //Promise 调用成功
        try{
            let postdata = ""
            //koa 监听
            ctx.req.on("data",(data)=>{
                postdata += data
            })
            //执行结束以后返回
            ctx.req.addListener("end",function(){
                let postList = parsingStr(postdata)
                resolve(postList)
            })
        }catch(err){
            reject(err)
        }
    })
}

//打字符串解析成json
function parsingStr(str){
    let parsingData = {}
    let parsingList = str.split("&")
    for(let value of parsingList){
        let item = value.split(‘=‘)
        parsingData[item[0]] = item[1]
    }
    return parsingData
}

app.listen(3000,()=>{
    console.log("OK")
})

四、安装中间件来解析post
通过安装 [email protected] 中间件 来解析 POST 数据 (就不用在手动去POST数据解析出来了)
1、安装 npm i --save [email protected]
2、引入插件 : const bodyParser = require(‘koa-bodyparser‘)
3、注册插件 : app.use(bodyParser ())
4、使用:ctx.body = ctx.request.body //ctx.request 直接就把 POST的数据解析成一个json了

原文地址:https://www.cnblogs.com/chengxiang123/p/9515286.html

时间: 2024-10-30 08:13:59

1、koa的安装,get和post方法的基础使用的相关文章

iOS 7.1下itms-services在线安装失败的解决方法

前段时间,接到客户的求助,主要是关于无法通过safari在线安装企业级应用的问题.经过一系列测试都没有发现相同现象,最后发现客户使用了还原的功能,把iPad的iOS升级到了7.1.网上搜索了一下,发现从iOS7.1开始,之前使用itms-services://URL方式在线安装ipa文件的方法都失效了,主要表现为在点击安装的时候,会报错为:"无法安装应用程序,因xxx.com的证书无效". 主要原因是苹果公司在iOS 7.1中修改了manifest.plist文件的访问协议,把原来的h

vmware tools安装程序无法继续,Microsoft Runtime DLL安装程序未能完成安装。的解决方法

vmware tools安装程序无法继续,Microsoft Runtime DLL安装程序未能完成安装.的解决方法_华英雄_新浪博客 http://blog.sina.com.cn/s/blog_54bf02090100xlqy.html   现象:VMware Workstation 8.0在安装VMware Tools时弹出对话框,提示"安装程序无法继续.Microsoft Runtime DLL安装程序未能完成安装."如图: 原因:虚拟机中Windows Installer服务

Sublime Text 无法使用Package Control或插件安装失败的解决方法

Sublime Text用了一年多了,公司搬家近期突然发现Package Control无法安装新插件了.尽管不影响原有功能的使用.还是要解决它.因为本人用Windows系统,仅仅讨论Windosw下的解决方法. Mac与Linux下的用户能够參照解决. 本文主要介绍Sublime Text怎样开启debug模式.分析使用过程中一些常见错误情形的解决方法. 情形一:Package Control:There are no packages available for installation.情

nginx - ubutun下安装nginx(详述编译方法)

一.使用apt命令安装 sudo apt-get install nginx 二.编译方法安装(个人实践方法,具体见官方文档) 1)说明:我使用的虚拟机是64位 ubuntu server14.04,源使用的是163的.(更换源见我另一篇随笔http://www.cnblogs.com/15ho/p/6045097.html) //由于系统是服务器版,可以能缺少下列软件 //缺少gcc sudo apt-get install gcc //缺少c++编译器 sudo apt-get instal

VMware 安装易飞的方法

(Oracle VM VirtualBox 虚拟机可以直接安装易飞)VMware 在安装易飞系统管理员时会提示:“此台机器为虚拟机,系统控制员不允许安装在此类机器上,请注意!”其实只需要在安装的虚拟机上修改一个参数即可,找到安装在虚拟机上的以.vmx的文件,用记事本打开,找到SMBIOS.reflectHost = "FALSE" ,此处“FALSE”改为“TRUE”即可安装! —————————————来源:204U软件 VMware 安装易飞的方法

富士通 安装双系统的方法

今天收到朋友的富士通UH554 笔记本,原装系统是Win8.1要求给他再装个XP系统(双系统),感觉没什么特别的一口答应下来,结果安装时半天进不了PE系统,傻了. 反复网上收索终于搞清楚了这个品牌的问题. 现贴出方法给大家以做参考: 2.压缩磁盘 在win8.1桌面,计算机(或者是"这台电脑")右键--管理--选择你的系统分区,右键--压缩卷,我选择安装XP,所以我只给了10个G的空间来安装XP,足够的,前提是不要安装太多不必要的软件在里面,稍等片刻,我们会看到系统磁盘后面有一个空白的

Silverlight运行时提示未安装silverlight runtime 解决方法

出现该问题是由于电脑上安装的silverlight不是silverlight developer. 一般来说安装完VS之后是不会出现该问题. 但是一旦更改了silverlight中web service中TestPage的minRuntimeVersion版本,因为默认生成的版本号是silverlight sdk(根据创建项目时选择的是silverlight 4还是5来判断是哪个版本的SDK)的版本号.一旦修改的版本号比电脑安装的sdk版本高,则会在第一次运行时提示需要安装更新版本的silver

PHP安装扩展mcrypt以及相关依赖项 【PHP安装PECL扩展的方法】

一:Mcrypt简介 Mcrypt是PHP的一个扩展,完成了常用加密算法的封装.其实该扩展是对mcrypt标准类库的封装,mcrypt完成了相当多的常用加密算法,如DES, TripleDES, Blowfish (default), 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2 和 GOST加密算法,并且提供了CBC.OFB.CFB 和 ECB 四种块加密的模型. 二:安装libmcrypt依赖库 要使用该扩展,必须首先安装mcrypt标准

Centos 6.8安装erlang&rabbitmq的方法

Centos 6.8安装erlang&rabbitmq的方法   1. 安装 erlang1.1 准备工作,先安装依赖库和应用工具yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel  rsync perl-net-snmp wx fop  net-snmp unixODBC unixODBC-devel  vim make lrzsz bc sysstat lsof wget xz 1.2 下载e

eclipse插件安装的四种方法

eclipse插件安装的四种方法 Eclipse插件的安装方法 1.在eclipse的主目录(ECLIPSE_HOME, 比如在我的机器上安装的目录是:D:\eclipse)有一个plugins的目录,这种方法的插件安装非常简单,只要将插件copy到这个目录下就可以 了.比如我有一个weblogic的插件(bea站点上可以下载),解压缩之后得到得到一个目录: [com.bea.eclipse.weblogic_1.1.1],我就将这个目录直接放到%ECLIPSE_HOME%\plugins目录下