增加一组有限的选项;API重大变化?


9

以一个HTTP API端点为例,它发出以下响应模型:

{
    "type": "Dog",
    "name": "Jessi",
    ...
}

type领域已经在文档中被描述为一个DogCatFish

例如Rat,是否将添加新选项视为API的重大更改?

将选项添加到有限列表(开发人员可以打开该列表)是否被视为对API的扩展或修改?

Answers:


10

如果文档将该字段描述为“狗”,“猫”或“鱼”之一,则可以,添加其他类型会以向后不兼容的方式更改接口。完全可以想象,您的API使用者编写了特定的代码来处理狗和猫,而不是处理鱼。给定未知类型,该消费者将不知道如何处理您的响应。但这很大程度上取决于这些占位符类型“猫”和“鱼”在您实际的问题域中所代表的含义……

如果经常更改可能的类型列表,或者如果列表不是有限的,那么对此进行记录是明智的。根据您的用例,将所有可能类型的列表作为API的终结点公开可能会比较好-这样一来,您就可以添加或删除类型而不必更新API版本。但是,类型越动态,API使用者就越难以执行特定于类型的操作。扩展性还是易用性更重要,取决于您的用例和问题领域。


很棒的答案-谢谢。如果文档在标题为“下表描述了API 当前支持的动物”的某些表中详细说明了选项,该怎么办。这是否表示可以扩展选项?
Dave New

1
@davenewza这可能是一个好主意,但我会更加明确。不要只是表明你的意思-直接说出来!我会尝试设定明确的期望,并在文档中为该端点提供稳定性保证,例如:“下表列出了当前支持的动物,尽管将来我们可能会添加或删除支持的动物。发生这种情况时,我们将更新API的次要版本号。”
阿蒙(Amon)

可执行规范>>>有文档的规范>>>无文档的规范。
VoiceOfUnreason

0

仅当可以从现有操作中返回“ Rat”时,它才会中断。

如果现有操作无法返回“ Rat”,则添加此新选项将无效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.