こんにちは、次のことが必要な Perl RESTful フレームワークを探しています。
- apache2/mod_perl2 で動作
- シンプルに
- 優雅であること
- 軽い
- 柔軟です
私はただ夢を見ているだけなのですか、それとも「独自のロール」アプローチを避けることができますか?
どのフレームワークをお勧めしますか?
私は私のいくつかの小さなプロジェクトにDancer ( github ) を使用しました。それは非常にエレガントで、物事を素早く終わらせるのが非常に簡単です. これは、Ruby フレームワークSinatraに触発されました。
次のように簡単です。
#!/usr/bin/env perl
use Dancer;
get '/' => sub {
'Hello world!'
};
dance;
テスト スイートを見ると、Dancer は十分に文書化されており、信頼できます。ソース ツリーの 80% 以上をカバーする ~500 のテストです。
これは PSGI/Plack に準拠しており、依存関係はほとんどありません。バージョン 1.0 はすぐにリリースされるはずです (おそらく今週末)。
引き続きダンサーのウェブサイトをご覧ください。
もう 1 つ考慮すべきはMojoliciousで、RESTful API の作成とテストの両方を非常に簡単な方法で行うことができます。
私のお気に入りの Perl Web アプリケーション フレームワークはCGI::Applicationです。これは非常に軽量 (継承可能な単一の基本クラス) であり、Web アプリ プログラミングの反復タスクを処理するために最低限必要な機能を実行し、それ以外の場合は邪魔になりません。正式な MVC 設計で使用することも、必要に応じてアドホックに使用することもできます。
これには単純なプラグインアーキテクチャがあり、テンプレート ツールキット ( HTML::Templateはすぐにサポートされます)セッション、 認証、 JSON、 ストリーミングなどのサポートを簡単に追加できます 。
最後に、REST のような使いやすい URL を作成するための優れたCGI::Application::Dispatchがあります。これは、URL ベースのディスパッチ用の強力なルールベースのエンジンを提供します。
また、その名前にもかかわらず、mod_perl 1 および 2 でシームレスに動作します。
Squatting
これらすべてのボックスにチェックマークが付いていることがわかると思います。
これを使ってかなりの数の小さな RESTful アプリを作成しました。これには理想的に適しており、一緒に仕事をするのは楽しいものです。
ここにいくつかのリンクがあります:
これは単純な「Hello World!」です。例:
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は、Restfull サービスを作成するために使用できる MVC フレームワークです。
編集: - 私が言った「新しい」フレームワークは、使用するのに適したテストフレームワーク(レール/スプリング/シームなど、触媒を使用すると、通常の単体テスト以外のテストを行うのは簡単ではありません)と多くの開発者が働いているものですそれらにアプリケーションを構築します (これらのフレームワークに関するコミュニティは、はるかに活発です)。そういうわけで、私は Catalyst も本当に柔軟だとは思いません。
最後に、独自の純粋な mod_perl2 RESTful API 専用フレームワークを展開しました: http://code.google.com/p/apache2rest/
本質的なものを除いて、何も組み込まれていません。残りは拡張可能です (または拡張可能です)。私はあなたのすべての提案を見ましたが、それらはすべてあまりにも多くのことに対処しているようです (DBI 管理、ORM、テンプレート エンジン、組み込みサーバーなど)。
それが私がこれを書いた理由です。お役に立てば幸いです。
回答が少し遅れて申し訳ありませんが、RESTフレームワークをリンクテキストで説明しました。これは私にとってうまく機能しました。これにより、新しいリソースの追加が非常に簡単になります。リソース固有のビジネスロジック以上のものを書く必要はほとんどありません。フレームワークが残りを処理します。