您好我正在寻找一个 Perl RESTful 框架,它必须:
- 在 apache2/mod_perl2 下工作
- 简单
- 优雅
- 轻一点
- 变通
我只是在做梦还是可以避免“自己动手”的方法?
你会推荐什么框架?
如果您查看测试套件,Dancer 的文档记录良好且值得信赖:大约 500 个测试覆盖了超过 80% 的源代码树。
它符合 PSGI/Plack 标准并且几乎没有依赖项。1.0 版应该很快就会发布(也许这个周末)。
请参阅舞者网站以保持关注。
另一个需要考虑的是Mojolicious,它允许以非常直接的方式编写和测试 RESTful API。
我最喜欢的 Perl Web 应用程序框架是CGI::Application。它非常轻量级(您可以从其继承的单个基类),并且只完成了处理 Web 应用程序编程的重复性任务所必需的最低限度,否则就不会妨碍您。你可以在正式的 MVC 设计中使用它,或者如果你想要的话,可以做更多的事情。
它具有简单的插件架构,允许您轻松添加对 Template Toolkit的支持 (开箱即用支持HTML::Template )会话、 身份验证、 JSON、 流式传输等。
最后,对于创建类似 REST 的友好 URL,有出色的CGI::Application::Dispatch,它为您提供了一个强大的基于规则的引擎,用于基于 URL 的调度。
此外,尽管它的名字,它在 mod_perl 1 和 2 下无缝工作。
我想你会发现Squatting
所有这些框都打勾!
我已经用它编写了很多小的 RESTful 应用程序。它非常适合这一点,并且很高兴与之合作。
这里还有一些链接:
这是一个简单的“你好世界!” 例子:
use strict;
use warnings;
{
package Simple;
use base 'Squatting';
}
{
package Simple::Controllers;
use Squatting ':controllers';
our @C = (
C(
Index => [ '/' ],
get => sub {
my ($self) = @_;
my $v = $self->v;
$v->{hello} = 'Hello World!';
$self->render( 'hello' );
},
),
);
}
{
package Simple::Views;
use Squatting ':views';
use HTML::AsSubs;
our @V = (
V( 'html',
layout => sub {
my ($self, $v, @yield) = @_;
html(
head( title('Simple web app') ),
body( @yield ),
)->as_HTML;
},
hello => sub {
my ($self, $v) = @_;
p( $v->{hello} );
},
),
);
}
将以上内容另存为Simple.pm在相关位置,并确保以下内容在您的 Apache 配置中:
<Perl>
use Simple 'On::MP20';
Simple->init
</Perl>
<Location />
SetHandler perl-script
PerlHandler Simple->mp20
</Location>
走开!
在这里,我还将顺便提一下其他一些应该符合要求的框架:
我说“顺便提一下”是因为我没有使用过其中任何一个,而且我不确定其中任何一个是否适用于 mod_perl2(开箱即用)。仍然PSGI / Plack
指日可待,这不会是太久的问题;-)
/I3az/
Catalyst是一个 MVC 框架,可用于制作 Restfull 服务
编辑: - 我说的“新”框架是那些有很好的测试框架可供使用的框架(比如 rails/spring/Seam,除了正常的单元测试之外,使用催化剂进行测试并不容易),还有很多开发人员在工作为他们构建应用程序(围绕这些框架的社区更加活跃)。这就是为什么我不认为 Catalyst 也很灵活。
我终于推出了自己的纯 mod_perl2 RESTful API 专用框架: http ://code.google.com/p/apache2rest/
除了必不可少的,没有什么是内置的。其余的都是可扩展的(或将是)。我看了你所有的建议,它们似乎都解决了太多的问题(DBI 管理、ORM、模板引擎、嵌入式服务器......)。
这就是我写这篇文章的原因。我希望你会发现它有用。
抱歉回答晚了,但我在链接文本中描述了一个对我来说效果很好的 REST 框架。它使添加新资源变得非常简单;除了特定于资源的业务逻辑之外,我几乎不需要写更多的东西;框架负责其余的工作。