【问题标题】:API with an non define number of parameters参数数量未定义的 API
【发布时间】:2016-04-24 07:10:44
【问题描述】:

我正在构建一个 API,允许用户传递 2 个不同的自定义字段列表。 API 基本上是这样的:

def 操作(类型、名称、日期、name_custom_1、name_custom_2、name_custom_3、date_custom_1、date_custom_2、date_custom_3、date_custom_4)

所以类型,名称日期是这个API的参数并且是强制性的。

name_custom_*date_custom_* 是可选的,我可以有 0, 1, 2, 3 ... 出于技术原因,我将 name_custom 的限制设置为 3,将 date_cutom 设置为 4,但最终这个限制会增加(但永远不会完全删除)

现在我的问题是,从用户的角度来看,制作这个 API 的最佳方式是什么:

def 操作(类型、名称、日期、name_custom_1、name_custom_2、name_custom_3、date_custom_1、date_custom_2、date_custom_3、date_custom_4)

def 操作(类型、名称、日期、names_custom、dates_custom):

其中names_customdates_custom 是一个不能大于X 的列表。

我在两者之间挣扎,并在两者中找到价值和逻辑。有什么建议?

【问题讨论】:

  • 能否请您标记您使用的语言?

标签: api architecture


【解决方案1】:

列表参数提供了更简洁的解决方案,因为:

  1. 函数签名中的参数更少,使文档更易于人类阅读。
  2. 它更能适应变化。假设您决定将自定义参数的最大数量从 4 个更改为 5 个。在列表方法中,更改更简单。

即使在函数调用中有 5 个参数也比平常多,而且通常被认为是草率的(请参阅How many parameters are too many?)。您可能需要考虑在这里引入一个类或几个类。根据您的应用程序,创建封装名称和自定义名称列表的类以及封装日期和自定义日期列表的类是否有意义?也许动作本身最好是一个具有许多 setter 方法的类?

换句话说,如果您的函数变得很长,或者参数列表变得很长,这通常表明在您的设计下有类等待被发现。

【讨论】:

  • 谢谢,也许我应该提到,但这是一个服务器 API。
  • 服务器 API 是什么意思?你是说 REST API?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 2014-12-19
相关资源
最近更新 更多