Hello world
index.js
const koa = require('koa') const app = new koa() app.use(async ctx => { ctx.body = 'hello world' }) app.listen(3000, () => { console.log('服务开启成功在3000端口') })query:返回的是格式化好的参数对象
querystring: 返回的是请求字符串
get接收参数
post接收参数
koa-bodyparser
npm install koa-bodyparser --save
2_get.js
const koa = require('koa') const app = new koa() app.use(async ctx => { // 获取访问路径 let url = ctx.url // 把url输出到http协议的响应体 ctx.body = { url } }) app.listen(3000, () => { console.log('服务开启成功在3000端口') })ctx是context的缩写中文一般叫成上下文,这个在所有语言里都有的名词,可以理解为上(request)下(response)沟通的环境,所以koa中把他们两都封装进了ctx对象,koa官方文档里的解释是为了调用方便,ctx.req=ctx.request,ctx.res=ctx.response,类似linux系统中的软连接?最终执行还是request和response对象
body是http协议中的响应体,header是指响应头 ctx.body = ctx.res.body = ctx.response.body
输出:
2_get.js
const koa = require('koa') const app = new koa() app.use(async ctx => { let url = ctx.url let query = ctx.query let queryString = ctx.querystring ctx.body = { url, query, queryString } }) app.listen(3000, () => { console.log('服务开启成功在3000端口') })login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h1>登陆页面</h1> <form action="http://localhost:3000" method="post"> <p> <label for="username">用户名</label> <input type="text" id="username" name="username"> </p> <p> <label for="password">密 码</label> <input type="text" id="password" name="password"> </p> <input type="submit" value="提交"> </form> </body> </html>3_post.js
const koa = require('koa') const app = new koa() app.use(async ctx => { // 叠加数据 let data = '' // 监听data事件,收到表单数据时就会执行 ctx.req.on('data', chunk => { data += chunk }) ctx.req.on('end', () => { // 解码 data = decodeURI(data) console.log(data) }) // 必须要有一个返回,否则客户端404 ctx.body = '123' }) app.listen(3000, () => { console.log('服务开启成功在3000端口') })命令行输出:
服务开启成功在3000端口 username=wayliu&password=123456由于上面的命令行输出的key=value形式的字符串,很麻烦,所以用koa-body-parser中间件。
npm install koa-bodyparser --save4_bodyparser.js
const koa = require('koa') const app = new koa() const bodyparser = require('koa-bodyparser') app.use(bodyparser()) app.use(async ctx => { let data = ctx.request.body ctx.body = data }) app.listen(3000, () => { console.log('服务开启成功在3000端口') })5_koa-router.js
const koa = require('koa') const app = new koa() const Router = require('koa-router') const router = new Router() router.get('/abc', (ctx, next) => { ctx.body = 'wayliu' }) router.get('/test', (ctx, next) => { ctx.body = 'test' }) app.use(router.routes()) app.use(router.allowedMethods()) app.listen(3000, () => { console.log('服务器开启成功在3000端口') })6_prefix.js
const koa = require('koa') const app = new koa() const Router = require('koa-router') const router = new Router({ prefix: '/wayliu' }) router.get('/abc', (ctx, next) => { ctx.body = 'wayliu' }) router.get('/test', (ctx, next) => { ctx.body = 'test' }) app.use(router.routes()) app.use(router.allowedMethods()) app.listen(3000, () => { console.log('服务器开启成功在3000端口') }) http://localhost:3000/wayliu/abc abc7_params.js
const koa = require('koa') const app = new koa() const Router = require('koa-router') const router = new Router({ prefix: '/wayliu' }) router.get('/abc', (ctx, next) => { ctx.body = ctx.query }) router.get('/test', (ctx, next) => { ctx.body = 'test' }) app.use(router.routes()) app.use(router.allowedMethods()) app.listen(3000, () => { console.log('服务器开启成功在3000端口') })