2

我正在尝试在我的 Mojolicious 应用程序中组合一个维护页面,只要服务器上存在文件或数据库条目,就会显示我的所有用户。

我知道我可以在启动时检查这个文件或条目,如果它在那里添加到我的“catch all”路线中。但是我不确定如何动态执行此操作?每当我想进行维护时,我都不想重新启动后端。

有没有办法从钩子中添加和删除路由?例如使用前调度挂钩来监视文件/数据库条目,如果它存在修改路由?

我试过这个,但我似乎无法从挂钩函数访问路由,只能在启动函数中访问。

谢谢你。

4

1 回答 1

7

在第一个请求得到处理之前,路由器是动态的,之后,路由器不能更改路由()。也就是说,您是否可以不一般地声明路线,而在该条件存在之前禁止任何访问?

#!/usr/bin/env perl

use Mojolicious::Lite;

any '/' => sub { shift->render( text => 'Hello World' ) };

under sub { 
  unless (-e 'myfile') {
    shift->render_not_found;
    return 0;
  }
  return 1;
};

any '/protected' => sub { shift->render( text => 'I am safe' ) };

app->start;
于 2014-03-10T04:00:15.787 回答