オプションの有限セットへの追加。APIの重大な変更?


9

次の応答モデルを吐き出すHTTP APIエンドポイントを取ります。

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

typeフィールドは次のいずれかであるとしてドキュメントに記載されているDogCatまたはFish

新しいオプションの追加は、たとえばRat、重大なAPIの変更と見なされますか?

有限リスト(開発者がオンにする可能性がある)にオプションを追加することは、APIの拡張または変更と見なされますか?

回答:


10

ドキュメントでこのフィールドがDog、Cat、またはFishの1つであると説明されている場合は、はい、別のタイプを追加すると、下位互換性のない方法でインターフェースが変更されます。APIのコンシューマが犬と猫を魚とは異なる方法で処理する特定のコードを記述したことは完全に考えられます。タイプが不明な場合、その消費者はあなたの応答をどうするかを知りません。しかし、これは、これらのプレースホルダタイプ「猫」と「魚」が実際の問題領域で何を表しているかに大きく依存します...

可能なタイプのリストへの変更が頻繁である場合、またはリストが有限でない場合、これをそのように文書化することは賢明です。ユースケースによっては、APIのエンドポイントとして可能なすべてのタイプのリストを公開するのが良い場合があります。これにより、APIバージョンを更新せずにタイプを追加または削除できることは明らかです。ただし、タイプが動的であるほど、APIコンシューマーがタイプ固有の何かを実行することが難しくなります。拡張性と使いやすさのどちらがより重要であるかは、ユースケースと問題ドメインによって異なります。


素晴らしい答え-ありがとう。「次の表では、現在 APIでサポートされている動物について説明ています。これは、オプションを拡張できることを示していませんか?
デイブニュー

1
@davenewzaそれはおそらく良い考えですが、私はより明確になります。意味を示すだけでなく、直接言ってください!私は明確な期待を設定し、そのエンドポイントのドキュメントで安定性の保証を提供するようにしたいと思います。たとえば、次のようなものです。その場合は、APIのマイナーバージョン番号を更新します。」
アモン

実行可能な仕様>>>文書化された仕様>>>文書化されていない仕様。
VoiceOfUnreason 2017

0

「Rat」が既存の操作から返された場合にのみ、問題が発生します。

既存の操作が「Rat」を返せない場合、この新しいオプションを追加しても効果はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.