- koa2
- koa-bodyparser -- 接收post请求参数转换的中间件
- koa-router -- 请求路由
- koa-static -- 静态资源访问中间件
1. 初始化 npm init
2.安装koa npm install koa
3 安装相关中间件
package.js
"name": "jc",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"koa": "^2.13.1",
"koa-bodyparser": "^4.3.0",
"koa-router": "^10.0.0",
"koa-static": "^5.0.0",
}
}
4 index.js
// router 中间件
const Router = require('koa-router');
// post请求参数转换
const BodyParser = require('koa-bodyparser');
// node原生文件路径
const path = require('path');
// 静态资源访问中间件
const static = require('koa-static')
const app = new Koa();
// 静态资源路径
const staticPath = "./static"
// 中间件 router
const router = new Router()
// 中间件获取post请求参数对象
const bodyparser= new BodyParser();
app.use(bodyparser);
app.use(static(path.join(__dirname,staticPath)))
// app.use(async (ctx)=>{
// console.log(ctx)
// if(ctx.url==="/original"&&ctx.method==="GET"){
// ctx.body = '原生请求未使用router中间件'
// }
// })
// get 请求
router.get('/',async(ctx)=>{
ctx.body=`<form action="/getForm" method="get">
<input type="submit" value="去post请求" />
</form>`
})
// 获取表单页面进行post提交
router.get('/getForm',async(ctx)=>{
// get 请求参数对象
ctx.body=`<form action="/" method="post">
<p>First name: <input type="text" name="fname" /></p>
<p>Last name: <input type="text" name="lname" /></p>
<input type="submit" value="Submit" />
</form>`
})
// post请求
router.post('/',async(ctx)=>{
// ctx.request.body 获取post请求参数对象(此时利用了bodyparser中间件)
ctx.body=ctx.request.body
})
router.get('/setCookies',async(ctx)=>{
// * ctx.cookies.set(name, value, [options])
// * 通过 options 设置 cookie name 的 value
// * maxAge 一个数字表示从 Date.now() 得到的毫秒数
// * signed cookie 签名值
// * path cookie 路径, 默认是'/'
// * domain cookie 域名
// * secure 安全 cookie
// * httpOnly 服务器可访问 cookie, 默认是 true
// * overwrite 一个布尔值,表示是否覆盖以前设置的同名的 cookie (默认是 false)
// * 如果是 true, 在同一个请求中设置相同名称的所有 Cookie(不管路径或域)是否在设置此Cookie 时从 Set-Cookie 标头中过滤掉。
ctx.cookies.set(
"cookies","cookies",{
// maxAge:10000,
expires:new Date("2021-06-24"),
overwrite:false,
}
)
// ctx.request.body 获取post请求参数对象(此时利用了bodyparser中间件)
ctx.body="setCookies"
})
router.get('/getCookies',async(ctx)=>{
// ctx.request.body 获取post请求参数对象(此时利用了bodyparser中间件)
ctx.body= ctx.cookies.get("cookies")
})
// app.use(async ctx => {
// console.log(ctx.url)
// ctx.body = 'Hello World';
// });
app.use(router.routes());
app.use(router.allowedMethods());
app.listen(3000,()=>{
console.log("服务器已启动...")
});