koa2入门——路由用法介绍

为了处理URL,我们需要引入koa-router这个middleware,让它负责处理URL映射。

在app.js中导入koa-router模块:

const router = require('koa-router')();

可以使用router的get或者post方法去接收http请求并调用对应的函数。如router.get('/path',async fn)或者router.post('/path',async fn)。

最后需要加上下面这句代码将router注册到app对象上面。

app.use(router.routes());

这样就可以让router替你接管url和处理函数之间的映射,而不需要你关心真实的访问路径如何。

但是,在处理post请求时,koa无法解析http请求体中的数据,这时我们需要引入另外一个模块叫做koa-bodyparser。

引入bodyparser之后需要注册到app对象上,且在router之前注册,然后才可能在router的post请求的处理函数中获取http请求体中的数据。

get请求代码实例:

const Koa = require('koa')
const fs = require('fs')
const app = new Koa()

const Router = require('koa-router')

let home = new Router()

// 子路由1
home.get('/', async ( ctx )=>{
  let html = `
    <ul>
      <li><a href="/page/helloworld">/page/helloworld</a></li>
      <li><a href="/page/404">/page/404</a></li>
    </ul>
  `
  ctx.body = html
})

// 子路由2
let page = new Router()
page.get('/404', async ( ctx )=>{
  ctx.body = '404 page!'
}).get('/helloworld', async ( ctx )=>{
  ctx.body = 'helloworld page!'
})

// 装载所有子路由
let router = new Router()
router.use('/', home.routes(), home.allowedMethods())
router.use('/page', page.routes(), page.allowedMethods())

// 加载路由中间件
app.use(router.routes()).use(router.allowedMethods())

app.listen(3000, () => {
  console.log('[demo] route-use-middleware is starting at port 3000')
})

注意导入koa-router的语句最后的()是函数调用:

const router = require('koa-router')();

相当于:

const fn_router = require('koa-router');
const router = fn_router();

猜你喜欢

转载自www.cnblogs.com/bq-med/p/8986201.html