2016-08-09 4 views
2

私はDjango REST APIとAngularJSクライアントを持っています。 APIを変更してクライアントに新しい機能を実装できるとします。
私はAPIとクライアントの両方の変更を(ほぼ)同時にプロダクションにプッシュします。新しいAPIバージョンが実行されますが、ユーザーのブラウザに古いコードを実行しているクライアントが複数存在することがあります。API更新情報を実行中のクライアントにプッシュするベストプラクティスは何ですか?

ブラウザ上でコードをプッシュして再読み込みする通常の方法は何ですか?

+0

下位互換性のためにAPIをコーディングする必要があります。または、新しいクライアントがAPIを使用している古いクライアントを壊すように変更された場合、そのクライアントがすべての顧客にロールアウトされるようにする必要があります。 APIが新しいクライアントに依存している場合は、ロールアウトする必要があります。それ以外の場合は、後方互換性のために防御的にコードします。それがWebアプリケーションをベースとしたブラウザの場合、コードを "プッシュ/リロード"する必要はありません。それはブラウザ/キャッシュをリフレッシュすることです。 – ManoDestra

答えて

1

これらのケースを処理する最善の方法は、FacebookやGoogleと同じように、バージョンごとにAPIの変更を公開することです。

古いクライアントは、新しいAPIが新しいAPIを呼び出す間、廃止されたAPIを呼び出し続けます。

注:古いバージョンをクリーンアップするときは、古いクライアントのサポートを中止することをクライアントに伝える必要があります。

例:古いクライアントをサポートしながら、あなたが整理コードを維持

//Old deprecated api 
GET /api/v1/users 
GET /api/v1/cars 

//New api - if logic did not change just redirect to old api 
GET /api/v2/users (unchanged) --> redirect to /api/v1/users 
GET /api/v2/cars new implementation 

その方法。

+0

メジャーバージョンでいいですね。マイナーバージョンとパッチバージョンで同じアプローチを使用する必要がありますか? –

+0

これは興味深い質問です。私はこれがメジャーにのみ適していると思うが、技術的にはあなたが望むようにあなたのAPIをバージョンアップできる、 'v2'または' v2。* ' –

関連する問題