1

想要制作一个 perl-module 基本上是什么:

  • 从网络请求中获取一些参数
  • 做一些内部逻辑
  • 并生成一个 json 字符串

我的问题是:这里有许多不同的方法来处理网络请求(解码查询字符串),比如(两个值得注意的是:)

  • CGI $query->{‘somearg’}或类似
  • Plack (Plack::Request)
  • 可能还有其他的……(网络框架等等……)

我应该如何编写模块,以便与不同的前端一起使用?

考虑类似的事情:

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 模块我应该学习什么?

4

2 回答 2

2

只需编写 MyJSONProducer::Plack。然后,如果你想在 CGI 环境中部署你的应用程序,你可以使用像Plack::Handler::CGI这样的东西。

这就是 Plack 和 PSGI 的重点。如果您将代码写入 PSGI 规范,那么您可以将其部署到任何地方。

于 2013-11-25T14:27:37.587 回答
1

你能做的已经不多了。不过,您可以使其更加用户友好。

假设您的模块称为 Kobame。然后您将创建它以及其他几个名为:

  • 小羽:CGI
  • Kobame:Plack
  • ...

其中每一个都将处理入门的细节,然后调用您的核心 Kobame 模块。Kobame 模块必须采用通用 perl 数据结构,并且不应引用任何 Web 模块。

于 2013-11-24T15:18:01.220 回答