2016-11-18 6 views
1

REST APIを構築する場合、バージョン2の応答に追加されるフィールドは、バージョン1のエンドポイントへの呼び出しからの応答で返される必要がありますか?例として 追加されたフィールドは、より低いAPIバージョンで表示する必要がありますか?

、エンドポイントapi/v1/users/1与えられ、応答があってもよい:

{ 
    "first_name":"david" 
} 

そしてV2で、エンドポイントapi/v2/users/1与えられ、応答があると、更新することができる:

{ 
    "first_name":"david", 
    "last_name":"smith" 
} 

なりますv1エンドポイントへの呼び出しで返されたv2エンドポイントへの呼び出しから返された同じ応答を持つことは悪い習慣ですか?私の最初の考えはイエスですが、この変更が壊れないので、もう一度私は問題を見ません。

LaravelとEloquentを使用してバージョン管理されたAPIを構築する方法を見つけようとしていたことから、問題が発生しました。私はEloquentでこれを達成する方法を簡単に見ることができず、モデルをバージョン管理されたモデルにマップするか、フィールドを制御するためにQueryBuilderですべてのリポジトリを作成する必要があります。 LaravelとEloquentとしてタグ付けされているのは、それらが私が使用している特定のフレームワークであり、誰かがそれらを使用する解決策を持っているかどうかを見たいと思っているからですが、一般的にapiデザインの問題です。

答えて

1

プロパティを追加するだけの場合は、APIをバージョンする必要はありません(おそらく)。正常に動作するクライアントは、新しいプロパティをすべて無視します。ほとんどの場合、プロパティの追加は変更なしとみなされます。

新しいプロパティを含めるようにV1 APIの応答を変更し、V1とまったく同じに見えるV2を追加することは愚かです。それをしないでください。同じように見える2つのバージョンの価値はありません。

変更が急変している場合は、V1 APIを更新して変更を加えても大したことではありません。そのようにしないでください。

私はLaravelとEloquentと話すことができません。

関連する問題