API包装器架构最佳实践

Ada*_*lor 9 api perl web-services

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

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

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

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

替代设计将类似于第一次描述,但不那么单一,具有用于API的单独"区域"的单独类.

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

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

干杯

dol*_*men 8

Joshua Bloch在" 如何设计一个好的API及其重要性 " 方面提供了很好的建议(视频,2007).

幻灯片(PDF) .


DVK*_*DVK 6

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

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

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

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