首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用koa路由器和koa挂载处理无效请求

用koa路由器和koa挂载处理无效请求
EN

Stack Overflow用户
提问于 2015-07-19 10:17:23
回答 1查看 758关注 0票数 1

我的应用程序使用koa-路由器,它使用koa-挂载挂载路由器,如下所示:

代码语言:javascript
运行
复制
var Router = require('koa-router');
var mount = require('koa-mount');

app = koa();

var router = new Router();
router.get('/foo', function *() { this.body = { success: true }));

app
  .use(mount('/api', router.middleware()))
  .use(RedisBoot)
;

所需的行为是,以未定义的api 开始的路由应该提供503或其他什么。相反,请求会传递给RedisBoot处理程序。我尝试在router的开头和结尾添加其他规则,但出于某种原因,它们似乎没有被调用。

我注意到新版本的koa路由器支持嵌套路由,并且有一些其他好的特性,所以如果现在不安装koa-挂载,可能会更容易实现这个功能吗?

EN

回答 1

Stack Overflow用户

发布于 2015-07-24 16:17:55

与其直接将路由器挂载到父应用程序,不如创建一个二级koa应用程序(它们不是重量级结构,因此不应该成为性能问题)。

在这个子应用程序中,添加路由器作为第一个中间件,添加一个catch处理程序作为第二个中间件,然后将子应用程序挂载到/api下的主应用程序。

代码语言:javascript
运行
复制
var Router = require('koa-router');
var mount = require('koa-mount');

var app = koa();
var subApp = koa();

var router = new Router();
router.get('/foo', function *() { this.body = { success: true }));

subApp
  .use(router.middleware())
  .use(function *() { ... throw 503 or something... })
;

app
  .use(mount('/api', subApp))
  .use(RedisBoot)
;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31500146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档