Mise à jour : novembre 2007
Classe représentant un modèle URI (Uniform Resource Identifier).
Espace de noms :
System
Assembly :
System.ServiceModel.Web (dans System.ServiceModel.Web.dll)
Visual Basic (Déclaration)
Visual Basic (Utilisation)
Dim instance As UriTemplate
public ref class UriTemplate
Un modèle URI vous permet de définir un ensemble d'URI structurellement semblables. Les modèles sont composés de deux parties : un chemin d'accès et une requête. Un chemin d'accès est constitué d'une série de segments délimités par une barre oblique (/). Chaque segment peut avoir une valeur littérale, une valeur variable (écrite entre accolades [{}], avec obligation de correspondre au contenu exact d'un segment) ou un caractère générique (un astérisque [*] qui correspond au reste du chemin d'accès). L'expression de requête peut être entièrement omise. Si elle est présente, elle spécifie une série non triée de paires nom/valeur. Les éléments de l'expression de requête peuvent être des paires littérales (? x=2) ou des paires variables (? x = {val}). Les valeurs non couplées ne sont pas autorisées. Les exemples suivants présentent des chaînes de modèle valides :
Les modèles URI précédents peuvent servir à l'organisation de bulletins météorologiques. Les segments placés entre accolades sont des variables ; tout le reste désigne un littéral. Vous pouvez convertir une instance UriTemplate en un type Uri en remplaçant des variables par des valeurs réelles. Par exemple, prenez le modèle "météo/{état}/{ville}" et insérez des valeurs pour les variables "{état}" et "{ville}". Vous obtenez "météo/WA/Seattle". Vous pouvez évaluer si un URI candidat donné correspond à un modèle URI donné en appelant la méthode Match(Uri, Uri). Vous pouvez également utiliser des instances UriTemplate pour créer un type Uri à partir d'un ensemble de valeurs de variables en appelant la méthode BindByName(Uri, NameValueCollection) ou BindByPosition(Uri, array<String>[]()[]).
The following code demonstrates how to create a UriTemplate instance, and bind and match it to a candidate URI.
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
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]);
}
}
System..::.Object
System..::.UriTemplate
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Windows Vista, Windows XP SP2, Windows Server 2003
Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
.NET Framework
Pris en charge dans : 3.5
Référence