安装
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}`)
})