CGI:: Приложение:: Плагин:: Экземпляр REST

Я пытаюсь создать службу Restful с помощью CGI::Application:: Plugin:: REST, но я не уверен, как на самом деле структурировать скрипт. Это то же самое, что и использование CGI::Application, поэтому ниже будут ссылки на скрипты экземпляра, ссылающиеся на модули в пути к библиотеке Perl?

    use CGI::Application::Plugin::REST qw( :all );

$self->rest_route(
        '/Stage/:id'    => {
            'GET'    => 'Stage',
        },
        '/Status/:id'   => {
            'GET'    => 'Status',
        },
        '/Metadate/:id' => {
            'GET'    => 'Metadata',
        },
$self->run();

Я признаю, что я, вероятно, изучаю CGI::Application в обратном направлении, и ищу легкий выход, так как после того, как фреймворк сделан, все остальное очень достижимо. Также я не хотел использовать фреймворки MVC, так как хотел построить его с нуля. Спасибо за помощь заранее.

1 ответ

Решение

Поскольку вы сказали, что хотите использовать это как структуру для построения, я бы рекомендовал поместить вашу логику CGI::App в ее собственный модуль. Это облегчит тестирование позже, когда вы начнете писать тесты. Ваш App.pm будет выглядеть как обычный контроллер CGI::App:

package App;

use strict;
use parent 'CGI::Application';
use CGI::Application::Plugin::REST ':all';

sub setup {
    my $self = shift;
    $self->rest_route(
        '/some/route' => {
            'GET' => 'read_widget',
            'POST' => 'save_widget',
        },
    );
}

sub read_widget { ... }
sub save_widget { ... }
1;

И тогда в вашем экземпляре сценария, который будет вызывать веб-сервер, вы можете просто use App; App->new->run;

Вы можете найти полностью функционирующий пример в тестовой библиотеке C::A::P::REST.

Другие вопросы по тегам