UriTemplate クラス

定義

URI (Uniform Resource Identifier) テンプレートを表すクラス。

public ref class UriTemplate
public class UriTemplate
type UriTemplate = class
Public Class UriTemplate
継承
UriTemplate

次のコードは、UriTemplate インスタンスを作成し、それを候補 URI にバインドおよび照合する方法を示しています。

UriTemplate template = new UriTemplate("weather/{state}/{city}?forecast={day}");
Uri prefix = new Uri("http://localhost");

Console.WriteLine("PathSegmentVariableNames:");
foreach (string name in template.PathSegmentVariableNames)
{
    Console.WriteLine("     {0}", name);
}
Console.WriteLine();

Console.WriteLine("QueryValueVariableNames:");
foreach (string name in template.QueryValueVariableNames)
{
    Console.WriteLine("     {0}", name);
}
Console.WriteLine();

Uri positionalUri = template.BindByPosition(prefix, "Washington", "Redmond", "Today");

NameValueCollection parameters = new NameValueCollection();
parameters.Add("state", "Washington");
parameters.Add("city", "Redmond");
parameters.Add("day", "Today");
Uri namedUri = template.BindByName(prefix, parameters);

Uri fullUri = new Uri("http://localhost/weather/Washington/Redmond?forecast=today");
UriTemplateMatch results = template.Match(prefix, fullUri);

Console.WriteLine("Matching {0} to {1}", template.ToString(), fullUri.ToString());

if (results != null)
{
    foreach (string variableName in results.BoundVariables.Keys)
    {
        Console.WriteLine("   {0}: {1}", variableName, results.BoundVariables[variableName]);
    }
}
Dim template As UriTemplate = New UriTemplate("weather/{state}/{city}?forecast={day}")
Dim prefix As Uri = New Uri("http://localhost")

Console.WriteLine("PathSegmentVariableNames:")
For Each name As String In template.PathSegmentVariableNames
    Console.WriteLine("     {0}", name)
Next

Console.WriteLine()
Console.WriteLine("QueryValueVariableNames:")
For Each name As String In template.QueryValueVariableNames
    Console.WriteLine("     {0}", name)
Next
Console.WriteLine()

Dim positionalUri As Uri = template.BindByPosition(prefix, "Washington", "Redmond", "Today")

Dim parameters As NameValueCollection = New NameValueCollection()
parameters.Add("state", "Washington")
parameters.Add("city", "Redmond")
parameters.Add("day", "Today")
Dim namedUri As Uri = template.BindByName(prefix, parameters)

Dim fullUri As Uri = New Uri("http://localhost/weather/Washington/Redmond?forecast=today")
Dim results As UriTemplateMatch = template.Match(prefix, fullUri)

Console.WriteLine("Matching {0} to {1}", template.ToString(), fullUri.ToString())

If results IsNot Nothing Then
    For Each variableName As String In results.BoundVariables.Keys
        Console.WriteLine("   {0}: {1}", variableName, results.BoundVariables(variableName))
    Next
End If

注釈

URI テンプレートでは、構造が似ている URI のセットを定義できます。 テンプレートは、パスとクエリの 2 つの部分から構成されています。 パスは、スラッシュ (/) で区切られた一連のセグメントから構成されています。 各セグメントには、リテラル値、変数値 (中かっこ [{ }] 内に記述。必ず 1 つのセグメントと一致するよう制約)、またはワイルドカード (アスタリスク [*] で記述。"残りのパス" に一致する) を指定することができます。ワイルドカードは、パスの最後に指定する必要があります。 クエリ式は、すべて省略することができます。 存在する場合、クエリ式は順序なしの一連の名前/値ペアを指定します。 クエリ式の要素には、リテラル ペア (?x=2) または変数ペア (?x={val}) を指定できます。 対になっていない値は使用できません。 次の例は、有効なテンプレート文字列を示しています。

  • "weather/WA/Seattle"

  • "weather/{state}/{city}"

  • "weather/*"

  • "weather/{state}/{city}?forecast=today

  • "weather/{state}/{city}?forecast={day}

上の URI テンプレートは天気予報を編成するときに使用されます。 中かっこで囲まれたセグメントは変数で、それ以外はすべてリテラルです。 変数を実際の値に置換することで、UriTemplate インスタンスを Uri に変換できます。 たとえば、"weather/{state}/{city}" テンプレートで変数 "{state}" と "{city}" に値を代入すると、"weather/WA/Seattle" のようになります。 候補 URI を指定すると、Match(Uri, Uri) を呼び出すことで、それが指定された URI テンプレートに一致するかどうかをテストできます。 UriTemplate インスタンスを使用し、Uri または BindByName(Uri, NameValueCollection) を呼び出すことで、一連の変数値から BindByPosition(Uri, String[]) を作成できます。

コンストラクター

UriTemplate(String)

指定したテンプレート文字列を使用して、UriTemplate クラスの新しいインスタンスを初期化します。

UriTemplate(String, Boolean)

UriTemplate クラスの新しいインスタンスを初期化します。

UriTemplate(String, Boolean, IDictionary<String,String>)

UriTemplate クラスの新しいインスタンスを初期化します。

UriTemplate(String, IDictionary<String,String>)

UriTemplate クラスの新しいインスタンスを初期化します。

プロパティ

Defaults

既定のパラメーター値に対する名前と値のペアのコレクションを取得します。

IgnoreTrailingSlash

候補 URI と照合する際にテンプレートの末尾のスラッシュ記号 "/" を無視するかどうかを指定します。

PathSegmentVariableNames

テンプレートのパス セグメント内で使用される変数名のコレクションを取得します。

QueryValueVariableNames

テンプレートのクエリ文字列内で使用される変数名のコレクションを取得します。

メソッド

BindByName(Uri, IDictionary<String,String>)

テンプレートおよびパラメーターのコレクションから新しい URI を作成します。

BindByName(Uri, IDictionary<String,String>, Boolean)

テンプレートおよびパラメーターのコレクションから新しい URI を作成します。

BindByName(Uri, NameValueCollection)

テンプレートおよびパラメーターのコレクションから新しい URI を作成します。

BindByName(Uri, NameValueCollection, Boolean)

テンプレートおよびパラメーターのコレクションから新しい URI を作成します。

BindByPosition(Uri, String[])

テンプレートおよびパラメーター値の配列から新しい URI を作成します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
IsEquivalentTo(UriTemplate)

UriTemplate が構造的に他のものと等しいかどうかを示します。

Match(Uri, Uri)

UriUriTemplate との照合を試みます。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

UriTemplate インスタンスの文字列表現を返します。

適用対象