如何构建perl Web服务基础结构

时间:2011-06-13 20:57:48

标签: web-services perl

我有很多用于管理多服务器基础架构的脚本。其中一些脚本需要root访问权限,一些需要访问数据库,其中大多数都是基于perl的。我想将所有这些脚本转换为可以从不同应用程序执行的非常简单的Web服务。这些Web服务将采用常规请求输入,并在执行时输出json。我想我应该设置一个简单的perl调度程序,称之为action,它将执行日志记录,检查凭据以及执行这些简单的脚本。类似的东西:

http://host/action/update-dns?server=www.google.com&ip=192.168.1.1

这将调用action perl驱动程序,后者又会使用适当的参数调用update-dns脚本(可能以某种方式清除)并返回适当的json响应。我希望此基础结构具有以下属性:

  • 所有脚本都位于一个位置。如果在那里删除了一个新脚本,那么它将自动变为可调用。
  • 所有脚本都需要有某种形式的清单来描述,谁可以调用它(属于某个ldap组),它需要什么参数,响应是什么等等。所以它是自我解释的。
  • 所有脚本都以谁做了什么以及响应是什么来记录。
  • 如果有一个命令行方式来执行# action update-dns --server=www.google.com --up=192.168.1.1
  • 之类的操作,那就太棒了

我是否必须从头开始实现这一目标,还是已经有一些我可以依赖的东西?

1 个答案:

答案 0 :(得分:2)

您可能想查看我的框架Sub::Spec。文档仍然很少,但我已经在几个项目中使用它,包括my other modules in CPAN

这个想法是你在函数中编写代码,为这些函数装饰/添加足够的元数据(包括一些摘要,参数规范等),并且会有工具链来处理你需要的东西,例如:在命令行中运行您的功能(使用Sub::Spec::CmdLine和HTTP)(使用Sub::Spec::HTTP::ServerSub::Spec::HTTP::Client)。

初期有一个sample project。另请查看http://gudangapi.com/。例如,函数GudangAPI::API::finance::currency::id::bca::get_bca_exchange_rate()可以通过HTTP API作为API函数访问。

Contact me如果你有兴趣部署这样的东西。