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)
我想知道我们如何使用 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)