job:simple
Shadowcat Systems的技术总监Matt Trout是Perl社区中最杰出的成员之一。 多年来,他一直在为Perl应用程序构建核心工具,其中包括Catalyst MVC(模型,视图,控制器)Web框架的共同维护者,DBIx :: Class对象管理系统的创建者等等。 面对面,他充满活力,有趣,聪明,有时很难跟上。 马特(Matt)编写代码时……好吧,想一想电锯失控,扣紧扳机并禁用安全功能的情况。 他正在奔跑,而你永远也不知道会发生什么。 几乎可以肯定有两件事:该模块将完全适合Matt所考虑的目的,并且它将显示在CPAN上供其他人使用。
网址::简单 。 它被吹捧为“构建简单Web应用程序的快速简便方法”,是一种精简,简约的Web框架,具有易于学习的界面。 Web :: Simple根本不是为大型应用程序设计的; 但是,对于在低流量环境中执行一两个操作的小型工具而言,它可能是理想的选择。 如果您要为演示创建新应用程序的快速线框,我还可以设想将其用于快速原型制作。 您可以使用cpan
或cpanm
安装模块。 安装完它之后,您就可以编写简单的Web应用程序,而不必费心管理连接或其中的任何连接-只需您的功能即可。 这是一个简单的例子:
#!/usr/bin/perl
package HelloReader
;
use Web
::
Simple
;
sub dispatch_request
{
GET
=>
sub
{
[
200
,
[
'Content-type'
,
'text/plain'
]
,
[
'Howdy, Opensource.com reader!'
]
]
}
,
''
=>
sub
{
[
405
,
[
'Content-type'
,
'text/plain'
]
,
[
'You cannot do that, friend. Sorry.'
]
]
}
}
HelloReader
->
run_if_script
;
有几件事需要立即注意。 首先,我没有像use warnings
一样use strict
use warnings
。 Web :: Simple会为您导入这些内容,因此您不必这样做。 它还会导入Moo (一个简约的OO框架),因此,如果您了解Moo并想在这里使用它,就可以! 系统的核心在于dispatch_request
方法,您必须在应用程序中定义该方法。 该方法中的每个条目都是一个匹配字符串,后跟一个子例程,以在该字符串匹配时做出响应。 该子例程必须返回一个数组引用,其中包含状态,标头和对请求的答复的内容。
Web :: Simple中的匹配系统功能强大,可以进行复杂的匹配,在URL中传递参数,查询参数和扩展名匹配,几乎可以采用任何所需的组合。 如上例所示,以大写字母开头将与request方法匹配,并且可以将其与路径匹配轻松组合:
'GET + /person/*'
=>
sub
{
my
(
$self
,
$person
)
=
@_
;
# write some code to retrieve and display a person
}
,
'POST + /person/* + %*'
=>
sub
{
my
(
$self
,
$person
,
$params
)
=
@_
;
# write some code to modify a person, perhaps
}
在后一种情况下,匹配的第三部分表示我们应该选择所有POST参数,并将它们放入名为$params
的hashref中,以供子例程使用。 使用?
而不是%
,匹配的那部分将获取查询参数,这通常在GET请求中使用。 还有一个有用的导出子程序,称为redispatch_to
。 该工具可让您重定向,而无需使用3xx重定向; 它是内部处理的,用户看不见。 所以:
'GET + /some/url'
=>
sub
{
redispatch_to
'/some/other/url'
;
}
到/some/url
GET请求将被处理,就像发送到/some/other/url
,没有重定向,并且用户不会在浏览器中看到重定向。
我刚刚使用了此模块。 如果您正在为大型项目寻找生产准备就绪的产品,那么Dancer或Catalyst会更好。 但是,Web :: Simple的重量轻且内置Moo集成,可以为各种一次性服务和较小的服务提供足够大的帮助。
翻译自: https://opensource.com/article/18/1/introduction-websimple-perl-module-minimalist-web-framework
job:simple