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
通过安装 koa-bodyparser@3 中间件 来解析 POST 数据 (就不用在手动去POST数据解析出来了)
1、安装 npm i --save koa-bodyparser@3
2、引入插件 : const bodyParser = require('koa-bodyparser')
3、注册插件 : app.use(bodyParser ())
4、使用:ctx.body = ctx.request.body //ctx.request 直接就把 POST的数据解析成一个json了

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

  1. 解决“只能通过Chrome网上应用商店安装该程序”的方法

    摘要 : 最近有些用户反映某个Chrome插件在安装的时候,提示"只能通过Chrome网上应用商店安装该程序",为了解决这一问题,Chrome插件网带来了相关的解决方法. 某些用户 ...

  2. win7中VS2010中安装CSS3.0问题解决方法

    win7中VS2010中安装CSS3.0问题解决方法   在安装Standards Update for VS2010 SP1后,VS2010中没有CSS3.0问题,以下是我的解决方法 1.首先去官网 ...

  3. sublime text2安装package control的方法

    Package Control 方法一:在线安装,首先打开 Ctrl + ~,输入如下的代码: import urllib2,os; pf='Package Control.sublime-packa ...

  4. (转载)eclipse插件安装的四种方法

    eclipse插件安装的四种方法 Eclipse插件的安装方法 1.在eclipse的主目录(ECLIPSE_HOME, 比如在我的机器上安装的目录是:D:\eclipse)有一个plugins的目录 ...

  5. BizTalk 2013R2 WCF-LOB Oracle Adapter安装配置/问题&解决方法

    BizTalk 2013R2 WCF-LOB Oracle Adapter安装配置/问题&解决方法 安装Oracle Adapter 安装Oracle客户端 BizTalk 2013R2 安装 ...

  6. CentOS 6.5系统上安装SVN服务器端的方法及步骤

    VN其实就是Subversion,分为服务器端和客户端.之前在网上搜了很多方法,都有各种问题,经过自己搜集整理以及实际尝试,总算有个比较靠谱的方法.本文主要介绍CentOS 6.5系统上安装SVN服务 ...

  7. 通过改变计算机策略来解决“只能通过Chrome网上应用商店安装该程序”的方法及模版文件下载

    通过改变计算机策略来解决“只能通过Chrome网上应用商店安装该程序”的方法及模版文件下载 操作步骤 1.开始 -> 运行 -> 输入gpedit.msc -> 回车确定打开计算机本 ...

  8. (KEIL)MDK5安装与JLINK问题解决方法(支持代码自动补全)

    MDK V5在10月8日发布,昨天终于没忍住装上使用了一下,尝了尝鲜.   安装和破解的方法相信各位高手都不在话下,实在不会的可以参考keil4的安装步骤,keil5 和 keil4的安装没有的区别. ...

  9. xcode 6.4 安装Alcatraz失败解决方法

    Alcatraz Xcode6.4安装不了解决方法http://www.cocoachina.com/bbs/read.php?tid=310380 版权声明:本文为博主原创文章,未经博主允许不得转载 ...

  10. linux安装IPython四种方法

    IPython是Python的交互式Shell,提供了代码自动补完,自动缩进,高亮显示,执行Shell命令等非常有用的特性.特别是它的代码补完功能,例如:在输入zlib.之后按下Tab键,IPytho ...

随机推荐

  1. redis 参数配置总结

    redis.conf 配置项说明如下 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程   daemonize no 2. 当Redis以守护进程方式运行时, ...

  2. Mark一下:成为CSDN博客专家

    距第一篇博客(发表于2015.08.13)已有差不多7个月,还记得当时受一个基友的启发,觉得要总结写作些什么,于是磕磕碰碰写出第一篇博客,坚持写作至今,穿梭于CSDN.简书.知乎和作业部落等门户网站, ...

  3. BA-siemens-apogee-ppcl

    adapts函数的使用 常规控制风机及阀门的程序是使用PID来调节,但是自适应算法能更好的调节. 西门子的自适应调节函数adapts用法如下: 以下文章为网络转载,原文链接地址http://news. ...

  4. BA--湿球温度和干球温度的区别

    关于湿球温度和干球温度的区别: 干湿球温度表:用一对并列装置的.形状完全相同的温度表,一支测气温,称干球温度表,另一支包有保持浸透蒸馏水的脱脂纱布,称湿球温度表.当空气未饱和时,湿球因表面蒸发需要消耗 ...

  5. UML期末绘图及细节总结

    往届期末绘图的题目例如以下所看到的: Read the providing materials carefully, and then do tasks. 2.1: Use Case Diagram ...

  6. 技术总结--android篇(一)--MVC模式

    先介绍下MVC模式:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显 ...

  7. openfire 安装部署

    1. openfire安装和配置 本文介绍openfire 在linux上安装部署过程 linux上有两种安装方式,一个是RPM包方式.还有一个是tar.gz压缩包方式, 官方推荐採用RPM包方式,会 ...

  8. pyspark MLlib踩坑之model predict+rdd map zip,zip使用尤其注意啊啊啊!

    Updated:use model broadcast, mappartition+flatmap,see: from pyspark import SparkContext import numpy ...

  9. jqueryui slider

    <!doctype html><html lang="en"><head> <meta charset="utf-8" ...

  10. javascript中的闭包以及闭包应用

    闭包简单理解就是能够读取其他函数内部变量的函数,而在javascript中只有内部函数可以读取函数的内部变量,所以我们学习javascript时可以这样理解,函数A中嵌套了一个函数B,然后我们用函数B ...