你推荐啥 Perl RESTful 框架? [关闭]
Posted
技术标签:
【中文标题】你推荐啥 Perl RESTful 框架? [关闭]【英文标题】:What Perl RESTful framework do you recommend? [closed]你推荐什么 Perl RESTful 框架? [关闭] 【发布时间】:2010-12-13 02:56:34 【问题描述】:您好,我正在寻找一个 Perl RESTful 框架,它必须:
在 apache2/mod_perl2 下工作 简单一点 优雅 轻一点 要灵活我只是在做梦还是可以避免“自己动手”的方法?
你会推荐什么框架?
【问题讨论】:
【参考方案1】:我在一些较小的项目中使用过Dancer (github)。它非常优雅并且很容易快速完成任务。它的灵感来自 Ruby 框架 Sinatra。
很简单:
#!/usr/bin/env perl
use Dancer;
get '/' => sub
'Hello world!'
;
dance;
【讨论】:
【参考方案2】:如果您查看测试套件,Dancer 的文档记录良好且值得信赖:大约 500 个测试覆盖了超过 80% 的源代码树。
它符合 PSGI/Plack 标准并且几乎没有依赖项。 1.0 版应该很快就会发布(也许这个周末)。
请参阅the dancer website 继续关注。
【讨论】:
【参考方案3】:另一个需要考虑的是Mojolicious,它允许以非常直接的方式编写和测试 RESTful API。
【讨论】:
【参考方案4】:我想你会发现Squatting
勾选了所有这些框!
我已经用它编写了很多小型 RESTful 应用程序。它非常适合这一点,并且很高兴与之合作。
这里有更多链接:
GitHub repo Discussion group / mailing list Some blog posts Squatting on mod_perl2这是一个简单的“你好世界!”示例:
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>
你走吧!
在这里,我还要顺便提一下其他几个应该符合要求的框架:
Mojolicious::Lite
Dancer
我说“顺便提一下”是因为我没有使用过其中任何一个,而且我不确定其中任何一个是否适用于 mod_perl2(开箱即用)。仍然有PSGI / Plack
指日可待,这不会是太久的问题;-)
/I3az/
【讨论】:
【参考方案5】:我最喜欢的 Perl Web 应用程序框架是CGI::Application。它非常轻量级(您可以从其继承的单个基类),并且只完成了处理 Web 应用程序编程的重复性任务所必需的最低限度,否则就不会妨碍您。您可以在正式的 MVC 设计中使用它,或者根据您的需要做更多的事情ad hoc。
它有一个简单的plugin 架构,允许您轻松添加对 Template Toolkit (开箱即支持HTML::Template)sessions, authentication, JSON, streaming, 等等。
最后,对于创建类似 REST 的友好 URL,有出色的 CGI::Application::Dispatch,它为您提供了一个强大的基于规则的引擎,用于基于 URL 的调度。
此外,尽管它的名字,它在 mod_perl 1 和 2 下无缝运行。
【讨论】:
【参考方案6】:Catalyst 是一个 MVC 框架,您可以使用它来制作 Restfull 服务
它在 apache2/mod_perl2 下运行 它简单而优雅,但恕我直言,它不如大多数“新”MVC 框架 是的 .. 很轻。 不要以为它真的很灵活.. :( ..编辑: - 我说的“新”框架是那些有很好的测试框架可供使用的框架(比如 rails/spring/Seam,除了正常的单元测试之外,使用催化剂进行测试并不容易),还有很多开发人员正在努力构建应用程序(围绕这些框架的社区更加活跃)。这就是为什么我不认为 Catalyst 也很灵活。
【讨论】:
那么您对 Catalyst 的看法有问题。它可能是所有各种 Web 框架中最灵活的。而且我不确定你为什么认为它很难测试。 催化剂,事实上,大多数 perl 社区都依赖于来自 Test::Builder、Test::Harness 和 Test::More 沿袭的大量测试框架。对于网站的功能测试,我们中间的 Selenium 用户有 Test::WWW::Selenium,或者对于更简单的非 ajaxy 网站,Test::WWW::Mechaninze。然后,所有这些接口都可以在面向对象的测试框架中分层,其中包含诸如 Test::Class 之类的类,这是一个出色的 xunit 样式测试框架。我不确定您正在寻找什么测试框架,或者您是否只是不熟悉那里的内容。 我不确定你为什么不推荐 Catalyst,它非常灵活,而且随着迁移到 Moose,变得更加灵活。使用 Catalyst,您还可以非常轻松地构建 REST 服务。请参阅:search.cpan.org/~bobtfish/Catalyst-Action-REST-0.78/lib/…。至于测试,与 Perl 的其余部分一样,Catalyst 中内置了很多测试功能。看看search.cpan.org/~flora/Catalyst-Runtime-5.80013/lib/Catalyst/… 和相关模块。总而言之,我会说催化剂是一个不错的选择。 +1 表示 Catalyst,但 -1 表示关于灵活性/可测试性的错误评论。 我想我以前从未听说过有人称 Catalyst 为“轻量级”——即使没有添加 Moose,它也长期以来一直是 CPAN 大规模依赖链恐怖故事的典型代表。 (而且,如果有人抱怨 Catalyst 以外的依赖链,他们抱怨的可能是 Moose,所以 Moosifying Catalyst 无济于事。)【参考方案7】:我终于推出了自己的纯 mod_perl2 RESTful API 专用框架: http://code.google.com/p/apache2rest/
没有什么是内置的,除了基本的。其余的都是可扩展的(或将是)。我看了你所有的建议,它们似乎都解决了太多的问题(DBI 管理、ORM、模板引擎、嵌入式服务器......)。
这就是我写这篇文章的原因。我希望你会发现它有用。
【讨论】:
【参考方案8】:很抱歉回答有点晚,但我在link text 中描述了一个 REST 框架,它对我来说效果很好。它使添加新资源变得非常简单;除了特定于资源的业务逻辑之外,我几乎不需要写更多的东西;框架负责其余的工作。
【讨论】:
以上是关于你推荐啥 Perl RESTful 框架? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
你啥时候需要在 Perl 中 `END close STDOUT`?