[Kiev-pm] MVC::Neaf: Not Even A Framework

Michael Bochkaryov misha at rattler.kiev.ua
Fri Dec 2 09:36:45 PST 2016


Костя, посмотри еще вот сюда на тему OpenAPI:
http://search.cpan.org/~jhthorsen/Swagger2-0.86/lib/Swagger2.pm
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md
https://www.openapis.org/


Regards,
Michael Bochkaryov


2016-12-02 6:54 GMT-08:00 Konstantin S. Uvarin <khedin at gmail.com>:

> Приветствую.
>
> Как какой? Не догоню, так согреюсь! Там полдюжины ссылок на prior work, и
> это я ещё забыл Catalyst и PSGI, на которые тоже смотрел в процессе.
>
> А вот про OpenAPI хотелось бы подробнее, пока что нагуглил вот что:
>
> https://metacpan.org/pod/OpenAPI - какая-то ещё не написанная
> спецификация в версии 0.001
> https://vk.com/dev/openapi - API вконтакта.
>
> А Вы что имели в виду?
>
> С уважением,
>
>
> 2016-12-02 16:45 GMT+02:00 Konstantin Cherednichenko <
> dshadowukraine at gmail.com>:
>
>> IMHO Лучше смотреть в сторону OpenAPI... Какой смысл изобретать велосипед
>> с роутами и валидацией данных?
>>
>> On Dec 2, 2016 16:40, "Konstantin S. Uvarin" <khedin at gmail.com> wrote:
>>
>>> Приветствую всех!
>>>
>>> Сегодня я бы хотел представить веб-фреймворк на перл 5 собственного
>>> сочинения, Ниф (Not Even A Framework). Написан он больше для
>>> самообразования, т.к. и так их как собак нерезаных, но мне кажется, в нём
>>> есть некие здравые идеи. Суть такова:
>>>
>>> 1. Приложение разбивается на маленькие процедуры-хэндлеры, привязанные к
>>> пути в URI (см. тж. https://metacpan.org/pod/Dancer )
>>>
>>> 2. Хэндлер получает на вход объект запроса, из которого потом достаются
>>> параметры, куки, заголовки и т.д. (см. тж. https://metacpan.org/pod/Kelp
>>> )
>>>
>>> 3. Параметры и куки нельзя достать без валидации, например, при помощи
>>> регулярного выражения:
>>>
>>>   $req->param( foo => qr/\d+/ );
>>>
>>> См. тж. perl -T
>>>
>>> В качестве альтернативы есть самовалидирующиеся формы на базе
>>> Validator::LIVR или самописного каличного движка (но ЛИВР лучше).
>>>
>>> См. тж. https://metacpan.org/pod/Validator::LIVR и
>>> https://metacpan.org/pod/Data::CGIForm
>>>
>>> 4. Хэндлер может вернуть ссылку на хэш с какими угодно параметрами,
>>> которая затем передаётся в шаблонизатор для рендеринга. На данный момент
>>> поддерживается Template::Toolkit и JSON/JSONP
>>>
>>> Также есть ограниченный набор ключей с минусом, которые используются для
>>> управления самим фреймворком - -template, -status и т.п
>>>
>>> 5. Хэндлер может выбросить исключение: die 404 - легальный способ
>>> вернуть настраиваемую страницу not found. Все нормальные исключения (не
>>> трёхцифренные и не специальные объекты самого Neaf) трактуются как error
>>> 500.
>>>
>>> 6. Один и тот же код может в неизменном виде запускаться как cgi, psgi и
>>> под Apache2 + mod_perl (с некоторым бубном). Также поддерживается дебаг из
>>> командной строки:
>>>
>>>    perl myapp.pl --help
>>>    perl myapp.pl --list
>>>
>>> 7. Кроме этого есть поддержка статических страниц (не надо держать
>>> отдельно нормальный веб-сервер, чтобы проверить CSS или логотип), сессий в
>>> несколько недоделанном виде (планируется улучшение), отложенные действия,
>>> выполняемые после запроса, ну и по мелочи ещё.
>>>
>>> Пример кода:
>>>
>>>     use strict;
>>>     use warnings;
>>>     use MVC::Neaf;
>>>
>>>     MVC::Neaf->route( "/" => sub {
>>>         my $req = shift;
>>>
>>>         return {
>>>             -template => \'Hello, [% name %]!',
>>>             -type     => 'text/plain',
>>>             name      => $req->param( name => qr/\w+/, "Stranger" ),
>>>         },
>>>     });
>>>
>>> На каждую фичу есть небольшой пример, они же используются как
>>> дополнительные смоук-тесты к 80% покрытию юнит-тестами. см.
>>> https://github.com/dallaylaen/perl-mvc-neaf/tree/master/example
>>>
>>> Собственно фреймворк:
>>>
>>> https://metacpan.org/pod/MVC::Neaf
>>>
>>> Буду рад обратной связи, критике, багрепортам и запросам новых фич (см.
>>> тж. https://github.com/dallaylaen/perl-mvc-neaf/blob/master/TODO )
>>>
>>> С уважением,
>>>
>>> --
>>> Konstantin S. Uvarin
>>> jabber: see <from>
>>> skype: kuvarin
>>> http://github.com/dallaylaen
>>>
>>> _______________________________________________
>>> Kiev-pm mailing list
>>> Kiev-pm at pm.org
>>> http://mail.pm.org/mailman/listinfo/kiev-pm
>>>
>>>
>> _______________________________________________
>> Kiev-pm mailing list
>> Kiev-pm at pm.org
>> http://mail.pm.org/mailman/listinfo/kiev-pm
>>
>>
>
>
> --
> Konstantin S. Uvarin
> jabber: see <from>
> skype: kuvarin
> http://github.com/dallaylaen
>
> _______________________________________________
> Kiev-pm mailing list
> Kiev-pm at pm.org
> http://mail.pm.org/mailman/listinfo/kiev-pm
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/kiev-pm/attachments/20161202/938c23ff/attachment-0001.html>


More information about the Kiev-pm mailing list