5.post请求
-- 未经授权禁止转载 --

     安装

           npm i @koa/bodyparser


     @koa/bodyparser 用于解析 post 请求中以 json 和 url 编码格式发送的数据

          url (application/x-www-form-urlencoded)

           示例:

                 http://127.0.0.1:8008/postUrl

                 id = 007

                 web = www.dengruicode.com


          json (application/json)

           示例:

                 http://127.0.0.1:8008/postJson

                 {

                       "id": "008",

                       "web": "dengruicode.com"

                 }


import Koa from 'koa'
import Router from '@koa/router'
import BodyParser from '@koa/bodyparser'

const hostname = "127.0.0.1"
const port = 8008

const app = new Koa()
const router = new Router() //实例化一个 Router 对象

app.use(BodyParser()) //使用 @koa/bodyparser 中间件来解析 post 请求

//------ get请求
//路由是根据客户端发送的请求(包括请求的路径、方法等)调用与之匹配的处理函数
//根路由 http://127.0.0.1:8008/
router.get('/', async ctx => { //get请求
    ctx.body = "dengruicode.com"
})

//查询参数 http://127.0.0.1:8008/test?id=001&web=dengruicode.com
router.get('/test', async ctx => { //get请求
    let id = ctx.query.id
    let web = ctx.query.web
    ctx.body = id + " : " + web
})

//路径参数 http://127.0.0.1:8008/test2/id/002/web/www.dengruicode.com
router.get('/test2/id/:id/web/:web', async ctx => {
    let id = ctx.params.id
    let web = ctx.params.web
    ctx.body = id + " : " + web
})

//重定向路由 http://127.0.0.1:8008/test3
router.redirect('/test3', 'https://www.dengruicode.com')

//------ post请求
//[application/x-www-form-urlencoded] http://127.0.0.1:8008/postUrl
router.post('/postUrl', async ctx => {
    let id = ctx.request.body.id
    let web = ctx.request.body.web
    ctx.body = id + " : " + web
})

//[application/json] http://127.0.0.1:8008/postJson
router.post('/postJson', async ctx => {
    let id = ctx.request.body.id
    let web = ctx.request.body.web
    ctx.body = id + " : " + web
})

app.use(router.routes()) //将定义在 router 对象中的路由规则添加到 app 实例中

//------ 路由分组
//http://127.0.0.1:8008/user/add
//http://127.0.0.1:8008/user/del
const userRouter = new Router({ prefix: '/user' })
userRouter.get('/add', async ctx => {
    ctx.body = "添加用户"
})
userRouter.get('/del', async ctx => {
    ctx.body = "删除用户"
})
app.use(userRouter.routes())

// 在所有路由之后添加404处理函数
app.use(async ctx => {
    if (!ctx.body) { //若没有设置 ctx.body, 则说明没有到匹配任何路由
        ctx.status = 404
        ctx.body = '404 Not Found'
    }
})

app.listen(port, hostname, () => {
    console.log(`服务器已启动: http://${hostname}:${port}`)
})