我有一个非常简单的路由代码,使用@koa/router
:
import Koa from 'koa';
import Router from '@koa/router';
const app = new Koa();
const router = new Router();
router.use('/api', (ctx, next) => {
ctx.body = 'catch all with use';
ctx.status = 201;
next();
});
app.listen(3000);
然而,访问路径http://localhost:3000/api
返回404。那么,use
路由器的具体使用方法是什么呢?
我希望将所有以/api
前缀开头的请求发送到自定义中间件,该中间件本身可以是@koa/router
中间件或任何其他Koa中间件。
2条答案
按热度按时间f4t66c6m1#
我设法匹配了
/api/
下的所有内容:但是,这与没有尾随斜杠的
/api
不匹配。我找到了一个更简单的方法来实现同样的目标。但是,它不使用路由器示例的
use
方法:注意第二种方式的
'/api/.*'
是第一种方式的'/api'
+'/(.*)'
。显然,路由器示例的
use
为get
路径执行连接(类似地为post
等),因此,如果您在上面的第一种方式中使用(.*)
而不使用catchAll.get
的前导斜杠,它将尝试将其连接到/api(.*)
,然后将匹配/api2
等。bjg7j2ky2#
在您的示例中有两件事需要更新
1.我建议从Koa/router切换到使用前缀选项。那么您就不需要
use
中间件中的路径名1.您必须在应用程序中注册路由器。koa
app
不知道您示例中的apiRouter
。你需要在app.listen
之前添加这一行: