UriTemplate Classe

Definição

Uma classe que representa um modelo de URI (Uniform Resource Identifier).

public ref class UriTemplate
public class UriTemplate
type UriTemplate = class
Public Class UriTemplate
Herança
UriTemplate

Exemplos

O código a seguir demonstra como criar uma UriTemplate instância e associá-la e combiná-la com um URI candidato.

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

Comentários

Um modelo de URI permite definir um conjunto de URIs estruturalmente semelhantes. Os modelos são compostos por duas partes, um caminho e uma consulta. Um caminho consiste em uma série de segmentos delimitados por uma barra (/). Cada segmento pode ter um valor literal, um valor variável (escrito dentro de chaves [{ }], restrito para corresponder ao conteúdo de exatamente um segmento) ou um curinga (escrito como um asterisco [*], que corresponde ao "resto do caminho"), que deve aparecer no final do caminho. A expressão de consulta pode ser totalmente omitida. Se presente, ele especifica uma série não ordenada de pares nome/valor. Os elementos da expressão de consulta podem ser pares literais (?x=2) ou pares de variáveis (?x={val}). Valores não pagos não são permitidos. Os exemplos a seguir mostram cadeias de caracteres de modelo válidas:

  • "weather/WA/Seattle"

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

  • "weather/*"

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

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

Os modelos de URI anteriores podem ser usados para organizar relatórios meteorológicos. Segmentos entre chaves são variáveis, todo o resto é literal. Você pode converter uma UriTemplate instância em uma Uri substituindo variáveis por valores reais. Por exemplo, usar o modelo "weather/{state}/{city}" e colocar valores para as variáveis "{state}" e "{city}" fornece "clima/WA/Seattle". Dado um URI candidato, você pode testar se ele corresponde a um determinado modelo de URI chamando Match(Uri, Uri). Você também pode usar UriTemplate instâncias para criar um Uri conjunto de valores variáveis chamando BindByName(Uri, NameValueCollection) ou BindByPosition(Uri, String[]).

Construtores

UriTemplate(String)

Inicializa uma nova instância da classe UriTemplate com a cadeia de caracteres de modelo especificada.

UriTemplate(String, Boolean)

Inicializa uma nova instância da classe UriTemplate.

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

Inicializa uma nova instância da classe UriTemplate.

UriTemplate(String, IDictionary<String,String>)

Inicializa uma nova instância da classe UriTemplate.

Propriedades

Defaults

Obtém uma coleção de pares nome/valor para quaisquer valores de parâmetro padrão.

IgnoreTrailingSlash

Especifica que as barras "/" à direita no modelo devem ser ignoradas durante a correspondência com os URIs candidatos.

PathSegmentVariableNames

Obtém uma coleção de nomes variáveis usados em segmentos de linha no modelo.

QueryValueVariableNames

Obtém uma coleção de nomes variáveis usados na cadeia de caracteres de consulta no modelo.

Métodos

BindByName(Uri, IDictionary<String,String>)

Cria um novo URI de modelo e a coleção de parâmetros.

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

Cria um novo URI de modelo e a coleção de parâmetros.

BindByName(Uri, NameValueCollection)

Cria um novo URI de modelo e a coleção de parâmetros.

BindByName(Uri, NameValueCollection, Boolean)

Cria um novo URI de modelo e a coleção de parâmetros.

BindByPosition(Uri, String[])

Cria um novo URI com base no modelo e uma matriz de valores de parâmetro.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsEquivalentTo(UriTemplate)

Indica se um UriTemplate é estruturalmente equivalente a outro.

Match(Uri, Uri)

Tenta corresponder um Uri a um UriTemplate.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres da instância UriTemplate.

Aplica-se a