運行環境: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")
})