如何为不同的用户和控制级别设计API?

时间:2010-03-04 10:47:43

标签: api

我正在开发一个键值存储抽象层,就像JDBC或ActiveRecord一样,我想提供不同级别的API,这样最基本的就是:

get Key
set Key, Value
exists Key
delete Key

但是,我还想提供另一个API,它提供更低级别的细节,可以与CAP定理数据存储一起使用,例如:

get Key, Number_of_nodes_to_read_from
set Key, Value, Number_of_nodes_to_write_to
exists Key, Number_of_nodes_to_check
delete Key, Number_of_nodes_to_check, timeout_in_milliseconds

:为了让事情变得非常复杂,我还想要一个可以添加增值东西的API,例如地图缩减器,索引,带字段的记录,搜索。

无论如何,我的问题是我是否应该制作一个庞大的功能列表,或者我应该拆分API,记住我可能希望将来添加到API中。

由于

祖拜尔

注意:我原来的问题在这里:

Is this API too simple?

2 个答案:

答案 0 :(得分:1)

代替冗长的回答,我强烈建议您观看名为“How To Design A Good API and Why it Matters”的Google Techtalk,因为我相信它会解决您的问题。

我自己的建议是仅通过语言提供的内置地图或字典界面公开您的API,直到有必要为用户提供更高级别的控制。如果从一开始就暴露太多,你就会把自己锁定在你的特定实现中,这完全违背了API的目的......也就是提供抽象。

答案 1 :(得分:1)

get Key, Map_of_params如何? 第二个参数可以是一个简单的键值映射。