2012-04-22 3 views
11

「クライアントソフトウェアの更新が必要です」と表示するために、どのHTTPステータスコードを返す必要がありますか?たとえば、サーバーが提供したデータの形式を変更した場合、古いクライアントはこれで作業できなくなるため、クライアントは新しいデータを使用するようにアップグレードする必要があります。"クライアントソフトウェアの更新が必要です"というHTTPステータスコード - 何を使用しますか?

私はそれがまだ有効なパスであることを示したいので、私は404または410を使いたくありません。 415?わからない。

+0

これは、バージョン管理を行う方法と使用するコードを示唆している関連する質問に対する良い答えです。http://stackoverflow.com/questions/389169/best-practices-for-api-versioning – ArjunShankar

+0

Arjun、 3xxコードのリンクのおかげで、彼らは多分より適切かもしれませんが、まだそれらのどれも状態にかなり一致しません。私の場合、リソースは移動していません(一時的かどうか)。リソースはありますが、クライアントを更新する必要があります。これに適したコードについてはまだ不明です。 – antonio

+0

質問:クライアントが更新する必要があることをサーバーがどのように知っていますか? – ArjunShankar

答えて

0

有効なパスであれば、サーバーはエラーを示す代わりに引き続きサポートする必要があります。

あなたは、クライアントがTLSなどの異なるプロトコルに切り替える必要があります 必須

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

426アップグレードを必要

+0

パスは有効であり、パスが存在していてもデータを提供していることを示します。しかし、私が両方のバージョンをサポートし続けると、複数のバージョンのデータを管理することになります(これは短期間ではOKですが、長期的にはOKではありません)。私は、有効なパスであっても、私が提供する最新の新しいデータを利用するために、ソフトウェアを新しいバージョンにアップグレードする必要があることをユーザーに伝えたいと思います。さもなければ、彼はそれが古いことを意識していない古いバージョンで立ち往生します。彼はそれが決して更新されていないと思うだろう。 – antonio

+0

申し訳ありませんが、私は違いが表示されません。 2xxコードを送信すると、ユーザーは気付かないでしょう。 4xxコードを送信した場合は、クライアントを破棄します。私は間に何かがあるとは思わない。 古いURIを「非難する」ようにするには、ペイロードに何かを入れて、アップグレードする必要がある人に伝えます。 –

+0

ジュリアン、私の質問は好奇心がいっぱいでした。私は、ユーザーにソフトウェアをアップグレードする必要があり、できるだけ滑らかにするために、数週間でデータフォーマットの変更を予定しています。ほとんどの人はアップグレードして問題のない新機能を手に入れます。しかし、古いバージョンのソフトウェアを使用し続ける人は、常にいくつかあります。私はそれらを心配しています。私は404を返そうとは思わない:それは混乱するかもしれない。私はこの状況があまり一般的ではないと思っていますが、明らかにこのためのHTTPコードはありません。今のところ、私は415を使用すると思います。カスタム6xxコードを使用することもできます。 – antonio

-5

426アップグレード:-)間違った質問をしているかのようにそれは少しです/1.0、Upgradeヘッダーフィールドで指定します。

+5

このステータスコードは、特にクライアントソフトウェアではなく使用中のプロトコルを指しているため、これを公開APIに実装すると混乱することがあります。閉鎖されたシステムであっても、ステータスコードに基づいて他の機能が期待されるかもしれません。 – orbitbot

1

コメント者の大多数は、同じURIを使用している間に古いクライアントを壊していることを懸念しています。これは妥当な問題です。そのため、多くのAPIがURI自体でバージョン管理されています。

それは、ちょうど400だけではないと言いましたか?リクエストは古いクライアントからのものであるため、それは悪い要求です。

関連する問題