2011-07-20 15 views
16

通常、URL内のパラメータを考えるとき、私はそのクエリ文字列を考えます。ただし、技術的には、パスセグメントにパラメータを指定することもできます。したがって、このようなURL与えられた:私はこれを見ることはない。実際にはURLパスパラメータの使用例

http://www.a.com/frisbee;color=red;size=small/brand;test=1

http://www.a.com/frisbee/brand

代わりに、これを書くために合法です。どのフレームワークがあれば、これを利用していますか?

私は後半のASP.NET MVC3で作業しています。これらの種類のパラメータを抽出できるかどうかはわかりません。

+0

JAX-RSが認識して使用します。 –

+1

それらをサポートしていないフレームワークを使っているなら、いつでも['mod_rewrite' rules(http://httpd.apache.org/docs/current/mod/mod_rewrite.html)通常のクエリ文字列に変換します。しかし、遅くなる可能性があるので、私は生産で 'mod_rewrite'を避けるでしょう。 – pieman72

答えて

1

Javaサーブレットコンテナは、クライアントがパスパラメータを追加してクッキーをサポートしていない場合、セッションの状態を維持するためにURL書き換えを使用します。サーブレット仕様では、pathパラメータの名前はjsessionid

とする必要があります。 http://example.com/servlet_path;jessionid=E60FF3ABD2926AD9AA45513A385E373D

response.encodeURL()またはresponse.encodeRedirectURL()によってクライアントに返信するURLを常に渡して、コンテナが必要なパスパラメータを追加できるようにする必要があります。

また支持体がサーブレット

にマッピング要求の仕様によって要求されるサーブレットにマッピングするために使用されるパスは、要求オブジェクト マイナスコンテキストパスからのリクエストURLであり、パスが

パラメータ
2

多くの現代のフレームワークは、URL解析システムで変数をパスセグメントの一部として指定することをサポートします。

Symfony(PHP)とDjango(Python)は両方とも、正規表現を使用してURLから値を抽出することをサポートしているため、これをサポートします。

重要な違いの1つは、クエリ文字列で指定されたパラメータは、通常、辞書のような構造に解析されるため、通常は任意の順序で指定できます。パスセグメントのパラメータには適用されません。あなたはもちろんそれらを自分で辞書に解析することができますが、私が言及したフレームワークはあなたがそれを行うのを助けません。

技術的には、HTTP URIではパラメータの順序が重要であることに注意してください。つまり、パス内またはクエリ文字列内のパラメータの順序が異なる2つのURLを比較すると、彼らは別のリソースを参照することができます。

関連する問題