Koa - 捕获所有以前缀开头的路由

Koa - Catch all routes that start with prefix

我想知道我们如何使用 KOA-Router 捕获特定路由的所有 API 调用。 例如。我有一个这样设计的 api :

/api/
/api/user/
/api/user/create
/api/user/login
/api/user/delete

如何为所有以 /api/ 开头的调用触发路由 /api/?使用 expressJS,你可以做这样的事情来获取所有以特定路径开头的调用:

app.get('/api/*', ()=>{}); 

但是对于 KOA,星号“*”不起作用,而且我在 KOA 文档中找不到有用的东西。感谢您的帮助!

我在 path-to-regexp github 自述文件中找到了答案。 Koa 将其用于路径匹配。

https://github.com/pillarjs/path-to-regexp

他们有一个示例说明如何执行此操作:

const regexp = pathToRegexp("/:foo/(.*)");

所以我只需要输入 (.*) 而不是简单的 *

这是一个简单的例子。确保从 /api 路由调用 next() 以将请求传递到中间件堆栈。

const Koa = require('koa')
const Router = require('@koa/router')

const app = new Koa()
const router = new Router()

router.get('/api(.*)', (ctx, next) => {
  ctx.body = 'You hit the /api route'
  next()
})

router.get('/api/user', (ctx) => {
  ctx.body += '\nYou hit the /api/user route'
})

router.get('/api/user/create', (ctx) => {
  ctx.body += '\nYou hit the /api/user/create route'
})

app.use(router.routes())

app.listen(3000)