Подтвердить что ты не робот

Какую структуру Perl RESTful вы рекомендуете?

Привет, я ищу структуру Perl RESTful, которая должна:

  • работать под apache2/mod_perl2
  • быть простым
  • быть элегантным
  • быть светом
  • быть гибким

Я просто мечтаю или могу избежать подхода "Roll our own"?

Какие рамки вы бы порекомендовали?

4b9b3361

Ответ 1

Я думаю, вы обнаружите, что 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/

Ответ 2

Я использовал Dancer (github) для некоторых небольших моих проектов. Он очень изящный и очень легкий, чтобы быстро все было сделано. Он был вдохновлен каркасом Ruby Sinatra.

Это просто:

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

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

dance;

Ответ 3

Танцовщица довольно хорошо документирована и заслуживает доверия, если вы посмотрите на набор тестов: ~ 500 тестов, которые покрывают более 80% исходного дерева.

Соответствует PSGI/Plack и имеет несколько зависимостей. Версия 1.0 должна быть выпущена очень скоро (возможно, в эти выходные).

Смотрите веб-сайт танцора, чтобы оставаться в курсе.

Ответ 4

Другим рассмотрением будет Mojolicious, который позволяет как писать, так и тестировать API RESTful очень простым способом.

Ответ 5

Моя любимая инфраструктура веб-приложений Perl CGI::Application. Он очень легкий (один базовый класс, который вы можете унаследовать), и делает минимальный минимум необходимым для обработки повторяющихся задач программирования веб-приложений и, в противном случае, не работает. Вы можете использовать его в формальном MVC-дизайне или делать что-то более ad hoc, если это вам нужно.

Он имеет простую plugin, что позволяет легко добавлять поддержку для Template Toolkit (HTML::Template поддерживается из коробки) сеансы, authentication, JSON, потоковая передача, и т.д.

Наконец, для создания дружественных URL-адресов, подобных REST, есть отличный CGI::Application::Dispatch, который дает вам мощный механизм, основанный на правилах для отправки по URL-адресу.

Кроме того, несмотря на его имя, он работает без проблем в mod_perl 1 и 2.

Ответ 6

Catalyst - это структура MVC, которую вы можете использовать для создания служб Restfull

  • Он работает под apache2/mod_perl2
  • Это просто и элегантно, но IMHO не так сильно, как большинство "новых" MVC-фреймворков
  • Да, это свет.
  • Не думайте, что это действительно гибко..:(..

EDIT:  - "Новые" рамки, о которых я говорил, - те, которые имеют хорошие тестовые рамки для использования (например, rails/ spring/Seam, с катализатором нелегко выполнять тесты, кроме обычных модульных тестов), а также много разработчиков, работающих для создания приложений к ним (сообщество вокруг этих структур гораздо более активно). Вот почему я не думаю, что Catalyst действительно гибкий.

Ответ 7

Наконец-то я перевернул свою собственную чистую mod_perl2 RESTful API: http://code.google.com/p/apache2rest/

Ничто не встроено, кроме основного. Остальное растяжимо (или будет). Я просмотрел все ваши предложения, и все они, похоже, обращаются к слишком многим вещам (управление DBI, ORM, механизм шаблонов, встроенный сервер...).

Вот почему я написал это. Надеюсь, вы сочтете это полезным.

Ответ 8

Извините, что немного опоздал, но я описал структуру REST в тексте , который хорошо сработал у меня. Это упрощает добавление новых ресурсов; Мне едва нужно писать больше, чем бизнес-логика, специфичная для ресурсов; структура заботится обо всем остальном.