Привет, я ищу структуру Perl RESTful, которая должна:
- работать под apache2/mod_perl2
- быть простым
- быть элегантным
- быть светом
- быть гибким
Я просто мечтаю или могу избежать подхода "Roll our own"?
Какие рамки вы бы порекомендовали?
Привет, я ищу структуру Perl RESTful, которая должна:
Я просто мечтаю или могу избежать подхода "Roll our own"?
Какие рамки вы бы порекомендовали?
Я думаю, вы обнаружите, что 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/
Я использовал Dancer (github) для некоторых небольших моих проектов. Он очень изящный и очень легкий, чтобы быстро все было сделано. Он был вдохновлен каркасом Ruby Sinatra.
Это просто:
#!/usr/bin/env perl
use Dancer;
get '/' => sub {
'Hello world!'
};
dance;
Танцовщица довольно хорошо документирована и заслуживает доверия, если вы посмотрите на набор тестов: ~ 500 тестов, которые покрывают более 80% исходного дерева.
Соответствует PSGI/Plack и имеет несколько зависимостей. Версия 1.0 должна быть выпущена очень скоро (возможно, в эти выходные).
Смотрите веб-сайт танцора, чтобы оставаться в курсе.
Другим рассмотрением будет Mojolicious, который позволяет как писать, так и тестировать API RESTful очень простым способом.
Моя любимая инфраструктура веб-приложений Perl CGI::Application. Он очень легкий (один базовый класс, который вы можете унаследовать), и делает минимальный минимум необходимым для обработки повторяющихся задач программирования веб-приложений и, в противном случае, не работает. Вы можете использовать его в формальном MVC-дизайне или делать что-то более ad hoc, если это вам нужно.
Он имеет простую plugin, что позволяет легко добавлять поддержку для Template Toolkit (HTML::Template поддерживается из коробки) сеансы, authentication, JSON, потоковая передача, и т.д.
Наконец, для создания дружественных URL-адресов, подобных REST, есть отличный CGI::Application::Dispatch, который дает вам мощный механизм, основанный на правилах для отправки по URL-адресу.
Кроме того, несмотря на его имя, он работает без проблем в mod_perl 1 и 2.
Catalyst - это структура MVC, которую вы можете использовать для создания служб Restfull
EDIT: - "Новые" рамки, о которых я говорил, - те, которые имеют хорошие тестовые рамки для использования (например, rails/ spring/Seam, с катализатором нелегко выполнять тесты, кроме обычных модульных тестов), а также много разработчиков, работающих для создания приложений к ним (сообщество вокруг этих структур гораздо более активно). Вот почему я не думаю, что Catalyst действительно гибкий.
Наконец-то я перевернул свою собственную чистую mod_perl2 RESTful API: http://code.google.com/p/apache2rest/
Ничто не встроено, кроме основного. Остальное растяжимо (или будет). Я просмотрел все ваши предложения, и все они, похоже, обращаются к слишком многим вещам (управление DBI, ORM, механизм шаблонов, встроенный сервер...).
Вот почему я написал это. Надеюсь, вы сочтете это полезным.
Извините, что немного опоздал, но я описал структуру REST в тексте , который хорошо сработал у меня. Это упрощает добавление новых ресурсов; Мне едва нужно писать больше, чем бизнес-логика, специфичная для ресурсов; структура заботится обо всем остальном.