�轵�����餳�ä����ɤ��򤤤��ä�ͷ��Ǥ��Τ����ɡ�HTTP::Engine�ˤ�HTTP::Engine::Middleware�Ȥ����ߥɥ륦����������Ȥߤ⤢��Τǡ����ä����ʤΤ�UdonMap(Rack::URLMap��ɤ�)��ߥɥ륦�����Ǽ������Ƥߤ���
����ε����ΤȤ��ȹ������Ѥ�äƤ뤱�ɵ��ˤ��ʤ������ǡ����Ȥ����ε���ľ���Ȥ������ε�������Â������Udon::Middleware::URLMap���ߥɥ륦�����ǡ�server-middleware.pl���ߥɥ륦������UdonMap��Ȥäƽ�ľ������Ρ�
�ߥɥ륦�������Τϴ�ñ�˺�줿��use HTTP::Engine::Middleware�����Moose�ν���������򤷤���ߥɥ륦�����ѤΥ᥽�åɤ����䤷���ꤷ�Ƥ����Τǡ�HTTP::Engine��new����Ȥ��˻��ꤷ���ϥ�ɥ������˼¹Ԥ���������ꤿ���Ȥ��ϡ�before_handle��HTTP::Engine::Request������Ȥä�HTTP::Engine::Response���֤�������񤤤Ƥ��Ф��������� ���Υߥɥ륦�������������٤�Request����ʤ��Ȥ��䡢Request��ù����Ƽ����Ϥ������Ȥ��ϡ�Response����ʤ���Request���֤��Ƥ��ȼ��Υߥɥ륦������ϥ�ɥ�˽������Ϥ��ͻҡ���ñ��ñ�����ȥ⥸�塼��κǸ��__MIDDLEWARE__��񤯤Τ�˺�줺�ˡ�����Ǹ�����⤷�Ƥ���롣
���礤��Â����̩�˸����ȡ�before_handle���֤��ͤ�HTTP::Engine::Response���ä��Ȥ��˸¤ꡢ������before_handle�Υ롼�פ���λ���롣�ʤΤǼ��Υߥɥ륦�����˽�����󤷤����Ȥ��ϡ��̤�HTTP::Engine::Request���֤��ʤ��㤤���ʤ��櫓�ǤϤʤ������������Υߥɥ륦�������֤����ͤ����Τޤ޼��Υߥɥ륦�����⤷����request_handler�˥ꥯ�����ȤȤ����Ϥ�Τǡ����̤�HTTP::Engine::Request�������Ʊ�������ñ¤¤¤ò¤¹¤ë¥ªï¿½Ö¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½È¤ï¿½ï¿½Ö¤ï¿½ï¿½ï¿½Î¤ï¿½ï¿½È»×¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ê¤ï¿½ï¿½È¥ß¥É¥ë¥¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Å¤Í¤ï¿½ï¿½Ê¤ï¿½ï¿½ï¿½ï¿½ï¿½
�ǡ����θ�request_handler��after_handle�ν����ؤ�³��������ɡ��⤷before_handle������Τ����Τɤ줫��HTTP::Engine::Response���֤��Ƥ�����request_handler�ϸƤФ�ʤ����Ǥ�after_handle�ϥ��顼�Ǥ�ФƤʤ��¤�ϸƤФ�뤷����ǻߤޤ뤳�Ȥ�ʤ����Ĥޤ�after_handle����äƤ�ߥɥ륦�����������¹Ԥ�������Ȥ�����ư�ΤϤ���
�Ȥ����Ǽ¤Ϥ��켫�ΤϤ����äȺ�줿������ɡ��������褦�Ȼפäƥե�����ξ��ܤ��ƥ⥸�塼���̾���Ѥ����餤���ʤ�ư���ʤ��ʤäƤ���äȤ����ϥޤä����ǽ�˽񤤤Ƥ��Ȥ���NetaKit::Middleware::URLMap�ä�̾���ˤ��Ƥ�������ɡ�UdonMap2�ä�̾���ˤ���Ȳ��Τ���before_handle����__MIDDLEWARE__���Ρ�����ʤ��͡��衢���ۤ��פ�Perl������ܤ��롣�ʤ󤸤�����Ȼפ��Ĥĥ������ɤ�Ǥ�Ȥ��ˤ�����ͳ�˵��դ�����HTTP::Engine::Middleware��use���Ƥ��ĤΥ⥸�塼��̾�����Middleware�äƤΤ��ޤޤ�Ƥʤ��ȡ����Υ⥸�塼���ߥɥ륦�����Ȥ��ƽ�������Ƥ���ʤ���
# HTTP/Engine/Middleware.pm����ȴ�� sub import { my($class, ) = @_; my $caller = caller; return unless $caller =~ /(?:\:)?Middleware\:\:.+/; strict->import; warnings->import; init_class($caller); if (Any::Moose::moose_is_preferred()) { Moose->import({ into_level => 1 }); } else { Mouse->export_to_level( 1 ); } no strict 'refs'; *{"$caller\::__MIDDLEWARE__"} = sub { use strict; my $caller = caller(0); __MIDDLEWARE__($caller); }; *{"$caller\::before_handle"} = sub (&) { goto \&before_handle }; *{"$caller\::after_handle"} = sub (&) { goto \&after_handle }; *{"$caller\::middleware_method"} = sub { goto \&middleware_method }; }
�ʤ�Ǥ��ʡ��Ȥ���äȹͤ���������ɡ��ߥɥ륦�������Ȥ���Ȥ��Ȥ���use HTTP::Engine::Middleware�ʤ�����ɡ�import����Ǥ������������������Ƥ�Τǡ����⤷�ʤ���лȤ�¦�ΤȤ��Ǥ�Moose�ν����������before_handle�����䤷���ꤷ�Ƥ��ޤ���������¿ʬ�⥸�塼��̾��������դ��Ƥ����Ф褷�ʤˤ�äƤ����褦�ˤ��Ƥ����������Ȥ��פäƤ���������������äƤ�����󡣵��դ��貶�ġ�
�Ȥ����櫓��HTTP::Engine��HTTP::Engine::Middleware�λȤ������ʤ�Ȥʤ�ʬ���äƤ����Τǡ������������ɤ󲰤ȵ����ΤϽ����ˤ��ơ����̤�WAF�äݤ�ư���򤹤��ΤǤ��äƤߤ褦���ʡ�