私は現在、Restful API を開発していますが、最もエレガントで長寿命のソリューションは何だろうと考えています。
いくつかのデータ:
- Rest API: サーバー バックエンド
- アプリケーション: モバイル アプリケーション (ios、android など)
どちらも私たちによって管理され、消費されます。
ここに私の要件があります:
更新はオプションですが、推奨されます。クライアントにアプリケーションを更新するよう通知したいだけです。
更新が必要で、API が使用できなくなりました (これは、API のバージョン管理のために発生することはありませんが、誰にもわかりません)。
私はいくつかの解決策を考えることができます:
- 次のような新しい HTTP ヘッダーを含めます。
X-Client-Update: text="Some informative and meaningful message"; button="Do upgrade now!"; uri="itms-apps://itunes.com/apps/DevelopmentCompanyLLC"
アプリケーションは、それを処理してユーザーに表示する役割を果たします。
- エンドポイントを提供します。
リクエスト:
POST /api/versions/
Content-Type: application/json
{"client_version": "4.3", "os_version": "6.0", "os_vendor": "ios"}
応答 (更新可能):
{
"current_version": "4.4",
"latest_compatible_version": "4.0",
"update_required": false,
"update_available": true,
"message": "A new awesome update is available, download it now",
"uri": "itms-apps://itunes.com/apps/DevelopmentCompanyLLC",
"button_text": "I want it, and I want it now!"
}
応答 (更新はありません):
{
"current_version": "4.3",
"latest_compatible_version": "4.0",
"update_required": false,
"update_available": false,
}
アプリケーションの更新が必要な場合は、アプリケーションによって処理されるエラーを常に返したいと考えています。
どの HTTP ステータスを使用すればよいか迷っていますが、今のところ400 Bad parameters
、より良いコードが見つからなかったので考えています。
それに応じたメッセージは、エンドポイント ソリューションによって提供されるものと非常によく似ています。