我正在微服务环境中开发一项新服务。这是一个REST服务。为了简单起见,假设路径为:/ historyBooks
此路径的POST方法将创建一个新的历史记录。
假设一本历史书涵盖了一个或多个历史时期。
为简便起见,我们假设我们只有以下人类历史时代:
- 古
- 后古典
- 现代
在我的代码中,我想用来表示它们enum
。
方法的主体(有效负载)为JSON格式,并且应包含字段名称eras
。此字段是era
本书涵盖的值列表。
身体可能看起来像:
{
"name": "From the cave to Einstein - a brief history review",
"author": "Foo Bar",
"eras": ["Ancient", "Post Classical", "Modern"]
}
在此特定服务中,业务逻辑是:
如果输入中未提供任何时代,则认为本书涵盖了所有时代。
在API审查中,提出了一个建议:为ERAS枚举
包含另一个值ALL
,以明确表明已覆盖所有时代。
我认为它有一些优点和缺点。
优点:
显式输入
缺点:
如果提供了列表中的两项,请说ALL
和Ancient
-从应用程序中获取什么?我想这ALL
应该覆盖其他值,但这是新的业务逻辑。
如果我运行查询,对于涵盖特定时代的图书,我将如何代表涵盖所有时代的图书?如果ALL
还用于输出(使用相同的逻辑),则用户有责任将其解释ALL
为["Ancient", "Post Classical", "Modern"]
。
我的问题
我认为拥有新事物ALL
比根本没有造成更多的混乱。
你怎么看?您是否要添加此ALL
值或不使用它而保留API?