API包装器架构最佳实践

时间:2010-06-06 17:28:40

标签: perl web-services api

我正在围绕REST Web服务编写一个Perl包装器模块,我希望能就如何最好地构建模块提供一些建议。

我一直在寻找几种不同的Perl模块以获得灵感。

Flickr::Simple2基本上是一个大文件,其方法包含Flickr API中的不同方法,例如: getPhotos()等。

Flickr::API是另一个用于发出HTTP请求的模块(LWP)的子类。因此,基本上它只允许您使用LWP通过模块进行调用,该模块转到正确的API方法/ URL,而无需自己定义任何包装器方法。这解释得很差 - 但基本上它有一个方法,它接受一个参数(一个API方法名称)并构造正确的API调用,例如request() / response()

另一种设计方式与首次描述的方式类似,但不那么单一,而且API的单独“区域”具有单独的类。

我想遵循现代/最佳实践Perl方法,所以我使用Dist::Zilla来构建模块,Moose用于OO的东西,但我很欣赏一些如何实际的输入设计/建筑师我的包装。

指南/教程或指向其他精心设计的模块的指南将不胜感激。

干杯

2 个答案:

答案 0 :(得分:8)

Joshua Bloch对“How to Design a Good API and Why it Matters”有很好的提示(视频,2007)。

slides (PDF)

答案 1 :(得分:6)

这在某种程度上取决于您尝试包装的API的广度/深度。

如果只有一些简单的API调用,第一种方法就可以了。

如果它有非常复杂的API,你希望向用户公开“简单”模式,一种模式是将主模块和子类化为Main :: Module :: Simple,它将包围主底层模块

正如您所指出的,一个非常广泛的API可能会受益于被分成具有并行类(可能继承自或使用基类)负责包装每个区域的区域。只需确保将所有常见内容都考虑在内,以便对任何代码/设计重复进行操作。