1

私のようないくつかの静的ルートで単一ページのアプリケーションがあります。JavaScriptシングルページWebアプリケーションのバージョニングですか? (クエリ文字列)

example.org/#!/tools/ 
example.org/#!/stories/story-1/ 

これらは、いずれかのバージョン管理を必要としないルートの例です。 「ページ」が存在するか、リダイレクトされたか、または存在しません。

しかし、その後、私は、バージョンしたい他のリソースをしている(彼らは内部状態を持つことができますので、 - > 10個のパラメータのクエリ文字列で表記):

example.org/#!/tools/population -tool/+ ?A = B & C = D [...]

クエリ文字列PARAMATERSが(ツールがより多くの選択肢を許す可能性があるとして)時間の経過とともに変化する可能性があるため、私は追加したいですバージョンパラメータをこれらの「ページ」に追加します。

example.org/#!/tools/population-tool/ +? V = 1.1 & = B & C = D [...]

ユーザーはパラメータを指定せずにURLに移動したときに、デフォルトの状態とバージョンが自動的に追加されるように:

example.org/#!/tools/population-tool/ => 
example.org/#!/tools/population-tool/ + version + default state 

このURLを共有/ブックマークすることを決定した場合、バージョンパラメータは、常に、あるバージョンから別のバージョンへのパラメータの再マッピングを許可します。

  1. あなたはより良いアプローチを提案できますか?
  2. バージョンは、すべてのルートのURLの一部である必要がありますか?クエリ文字列をバージョニング

    example.org/#!/ V1 /ツール/人口-ツール/

  3. それともは完全に間違ったアプローチ のですか?おそらく私は、与えられたパラメータに基づいて 正しい "API"を推測する方法を持っているべきですか?

ありがとう。

答えて

0

パラメータから適切なAPIを推測することは面倒な作業であり、ルーティングサブシステムで不必要な複雑さを招きます。 URLに明示的に指定されたバージョン情報を持つ方がはるかにクリーンです。

ここでは、従うべきアプローチが1か2であるかどうかは、味わいの問題です。私の意見では、アプリケーションのバージョンがエンドユーザーにどのように認識されるかによって異なります。エンド・ユーザーがフロントエンドの変更を認識しない場合(MVCアーキテクチャーに従っていて、ビュー・レイヤーが変更されていない状態でモデル・レイヤーのみが変更されている場合は、アプローチ1が推奨されます)ユーザがどのバージョンを使用しているかを知ることが重要であるか、あるいはエンドユーザに見えるユーザインタフェースがバージョン間で異なる場合、バージョン情報をURLの顕著な位置に置くのでアプローチ2がより良い選択肢である。

アプリケーションの状態がバージョンによって異なるかどうかを調べる別の方法があります。 url(クエリパラメータを除く)はアプリケーションの状態を表し、その答えが真の場合は2番目のアプローチに従う必要があります。しかし、バージョン情報が主要なアプリケーションコードから抽象化されていて、特定の抽象化されたサブセクションにのみ関連している場合。いくつかのモデルクラスだけが1に近づくべきである。

関連する問題