20

您好我正在寻找一个 Perl RESTful 框架,它必须:

  • 在 apache2/mod_perl2 下工作
  • 简单
  • 优雅
  • 轻一点
  • 变通

我只是在做梦还是可以避免“自己动手”的方法?

你会推荐什么框架?

4

8 回答 8

17

我在一些较小的项目中使用过Dancer ( github )。它非常优雅并且很容易快速完成任务。它受到 Ruby 框架Sinatra的启发。

这很简单:

#!/usr/bin/env perl
use Dancer;

get '/' => sub {
    'Hello world!'
};

dance;
于 2009-11-05T12:07:33.690 回答
10

如果您查看测试套件,Dancer 的文档记录良好且值得信赖:大约 500 个测试覆盖了超过 80% 的源代码树。

它符合 PSGI/Plack 标准并且几乎没有依赖项。1.0 版应该很快就会发布(也许这个周末)。

请参阅舞者网站以保持关注。

于 2009-11-05T16:43:06.303 回答
8

另一个需要考虑的是Mojolicious,它允许以非常直接的方式编写和测试 RESTful API。

于 2009-11-05T10:28:55.220 回答
7

我最喜欢的 Perl Web 应用程序框架是CGI::Application。它非常轻量级(您可以从其继承的单个基类),并且只完成了处理 Web 应用程序编程的重复性任务所必需的最低限度,否则就不会妨碍您。你可以在正式的 MVC 设计中使用它,或者如果你想要的话,可以做更多事情。

它具有简单的插件架构,允许您轻松添加对 Template Toolkit的支持 (开箱即用支持HTML::Template )会话身份验证JSON流式传输等。

最后,对于创建类似 REST 的友好 URL,有出色的CGI::Application::Dispatch,它为您提供了一个强大的基于规则的引擎,用于基于 URL 的调度。

此外,尽管它的名字,它在 mod_perl 1 和 2 下无缝工作。

于 2009-11-04T18:22:55.970 回答
7

我想你会发现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/

于 2009-11-04T18:57:26.867 回答
4

Catalyst是一个 MVC 框架,可用于制作 Restfull 服务

  • 它在 apache2/mod_perl2 下运行
  • 它简单而优雅,但恕我直言,不如大多数“新”MVC框架
  • 是的..它很轻。
  • 不要认为它真的很灵活.. :( ..

编辑: - 我说的“新”框架是那些有很好的测试框架可供使用的框架(比如 rails/spring/Seam,除了正常的单元测试之外,使用催化剂进行测试并不容易),还有很多开发人员在工作为他们构建应用程序(围绕这些框架的社区更加活跃)。这就是为什么我不认为 Catalyst 也很灵活。

于 2009-11-04T17:39:37.990 回答
2

我终于推出了自己的纯 mod_perl2 RESTful API 专用框架: http ://code.google.com/p/apache2rest/

除了必不可少的,没有什么是内置的。其余的都是可扩展的(或将是)。我看了你所有的建议,它们似乎都解决了太多的问题(DBI 管理、ORM、模板引擎、嵌入式服务器......)。

这就是我写这篇文章的原因。我希望你会发现它有用。

于 2009-11-09T17:51:22.773 回答
0

抱歉回答晚了,但我在链接文本中描述了一个对我来说效果很好的 REST 框架。它使添加新资源变得非常简单;除了特定于资源的业务逻辑之外,我几乎不需要写更多的东西;框架负责其余的工作。

于 2010-06-02T02:40:08.233 回答