想要制作一个perl模块基本上是什么:
- 从web请求中获取一些参数
- 做一些内部逻辑
- 并生成一个json字符串
我的问题是:这里有许多不同的方法来处理web请求(解码查询字符串),比如(两个值得注意的方法是:)
- CGI
$query->{‘somearg’}
或类似 - Plack(Plack::请求)
- 可能还有其他的…(web框架等等…)
我应该如何编写模块,以便与不同的前端一起使用?
思考类似以下内容:
pakage MyJSONProducer::Plack; # for Plack based apps
use MyJSONProducer; # My module
my $prod = MyJSONProducer->new();
my $args = decode_plack_request_args($env); #make a hashref from args...
my $json = $prod->run($args); # call with args…
package MyJSONProducer::CGI; # for CGI based ones
use MyJSONProducer;
my $prod = MyJSONProducer->new();
my $args = decode_cgi_args($query); #make a hashref from args...
my $json = $prod->run($args); # call with args...
等等…
但在某种程度上,我觉得这不是一个很好的解决方案。。。
这里有没有一些建议的方法来处理这种情况?任何CPAN模块我应该学习什么?
只需编写MyJSONProducer::Plack。然后,如果你想在CGI环境中部署你的应用程序,你可以使用类似Plack::Handler::CGI的东西。
这就是Plack和PSGI的观点。如果您按照PSGI规范编写代码,那么您可以在任何地方部署它。
你没有什么可做的了。不过,你可以让它更人性化。
假设您的模块名为Kobame。然后,您将创建该模块以及其他几个名为的模块
- Kobame:CGI
- Kobame:Plack
每一个都将处理开始的细节,然后调用您的核心Kobame模块。Kobame模块必须采用通用的perl数据结构,并且不应该引用任何web模块。