UriTemplate UriTemplate UriTemplate UriTemplate Class

Определение

Класс, представляющий шаблон универсального кода ресурса (URI).A class that represents a Uniform Resource Identifier (URI) template.

public ref class UriTemplate
public class UriTemplate
type UriTemplate = class
Public Class UriTemplate
Наследование
UriTemplateUriTemplateUriTemplateUriTemplate

Примеры

В следующем примере кода демонстрируется создание экземпляра UriTemplate, его привязка и сопоставление с потенциальным URI.The following code demonstrates how to create a UriTemplate instance, and bind and match it to a candidate 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 с одинаковой структурой.A URI template allows you to define a set of structurally similar URIs. Шаблоны состоят из двух частей: путь и запрос.Templates are composed of two parts, a path and a query. Путь состоит из серии сегментов, разделенных косой чертой (/).A path consists of a series of segments delimited by a slash (/). Каждый сегмент может иметь литеральное значение, значение переменной (заключенное в фигурные скобки [{ }]), которое должно в точности совпадать с содержимым одного сегмента, или подстановочный знак (звездочка [*]), который ставится в конце пути и означает «оставшуюся часть пути».Each segment can have a literal value, a variable value (written within curly braces [{ }], constrained to match the contents of exactly one segment), or a wildcard (written as an asterisk [*], which matches "the rest of the path"), which must appear at the end of the path. Выражение запроса можно полностью опустить.The query expression can be omitted entirely. Если оно указано, оно задает неупорядоченную серию пар «имя-значение».If present, it specifies an unordered series of name/value pairs. Элементами выражения запроса могут быть либо литеральные пары (?x=2), либо пары переменных (?x={val}).Elements of the query expression can be either literal pairs (?x=2) or variable pairs (?x={val}). Непарные значения не допускаются.Unpaired values are not permitted. В следующих примерах приведены допустимые строки шаблонов:The following examples show valid template strings:

  • "weather/WA/Seattle""weather/WA/Seattle"

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

  • "weather/*""weather/*"

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

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

С помощью приведенных выше шаблонов URI можно упорядочить прогнозы погоды.The preceding URI templates might be used for organizing weather reports. Сегменты в фигурных скобках — это переменные, а все остальные — литералы.Segments enclosed in curly braces are variables, everything else is a literal. Экземпляр UriTemplate можно преобразовать в Uri, заменив переменные фактическими значениями.You can convert a UriTemplate instance into a Uri by replacing variables with actual values. Например, если в шаблон "weather/{state}/{city}" подставить значения переменных "{state}" и "{city}", получится "weather/WA/Seattle".For example, taking the template "weather/{state}/{city}" and putting in values for the variables "{state}" and "{city}" gives you "weather/WA/Seattle". Можно проверить, соответствует ли потенциальный URI заданному шаблону URI, вызвав метод Match(Uri, Uri).Given a candidate URI, you can test whether it matches a given URI template by calling Match(Uri, Uri). Также можно с помощью экземпляров UriTemplate создать Uri из набора значений переменных, вызвав метод BindByName(Uri, NameValueCollection) или BindByPosition(Uri, String[]).You can also use UriTemplate instances to create a Uri from a set of variable values by calling BindByName(Uri, NameValueCollection) or BindByPosition(Uri, String[]).

Конструкторы

UriTemplate(String) UriTemplate(String) UriTemplate(String) UriTemplate(String)

Инициализирует новый экземпляр класса UriTemplate с указанной строкой шаблона.Initializes a new instance of the UriTemplate class with the specified template string.

UriTemplate(String, Boolean) UriTemplate(String, Boolean) UriTemplate(String, Boolean) UriTemplate(String, Boolean)

Инициализирует новый экземпляр класса UriTemplate.Initializes a new instance of the UriTemplate class.

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

Инициализирует новый экземпляр класса UriTemplate.Initializes a new instance of the UriTemplate class.

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

Инициализирует новый экземпляр класса UriTemplate.Initializes a new instance of the UriTemplate class.

Свойства

Defaults Defaults Defaults Defaults

Получает набор пар «имя-значение» для значений параметров по умолчанию.Gets a collection of name/value pairs for any default parameter values.

IgnoreTrailingSlash IgnoreTrailingSlash IgnoreTrailingSlash IgnoreTrailingSlash

Указывает, учитываются ли символы косой черты "/" в конце строки шаблона при сравнении с подходящими кодами URI.Specifies whether trailing slashes "/" in the template should be ignored when matching candidate URIs.

PathSegmentVariableNames PathSegmentVariableNames PathSegmentVariableNames PathSegmentVariableNames

Возвращает коллекцию имен переменных, используемых в сегментах пути в шаблоне.Gets a collection of variable names used within path segments in the template.

QueryValueVariableNames QueryValueVariableNames QueryValueVariableNames QueryValueVariableNames

Возвращает коллекцию имен переменных, используемых в строке запроса в шаблоне.Gets a collection of variable names used within the query string in the template.

Методы

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

Создает новый универсальный код ресурса (URI) на основании шаблона и коллекции параметров.Creates a new URI from the template and the collection of parameters.

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

Создает новый универсальный код ресурса (URI) на основании шаблона и коллекции параметров.Creates a new URI from the template and the collection of parameters.

BindByName(Uri, NameValueCollection) BindByName(Uri, NameValueCollection) BindByName(Uri, NameValueCollection) BindByName(Uri, NameValueCollection)

Создает новый универсальный код ресурса (URI) на основании шаблона и коллекции параметров.Creates a new URI from the template and the collection of parameters.

BindByName(Uri, NameValueCollection, Boolean) BindByName(Uri, NameValueCollection, Boolean) BindByName(Uri, NameValueCollection, Boolean) BindByName(Uri, NameValueCollection, Boolean)

Создает новый универсальный код ресурса (URI) на основании шаблона и коллекции параметров.Creates a new URI from the template and the collection of parameters.

BindByPosition(Uri, String[]) BindByPosition(Uri, String[]) BindByPosition(Uri, String[]) BindByPosition(Uri, String[])

Создает новый универсальный код ресурса (URI) на основании массива значений параметров.Creates a new URI from the template and an array of parameter values.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
IsEquivalentTo(UriTemplate) IsEquivalentTo(UriTemplate) IsEquivalentTo(UriTemplate) IsEquivalentTo(UriTemplate)

Показывает, эквивалентна ли структура шаблона UriTemplate структуре другого шаблона.Indicates whether a UriTemplate is structurally equivalent to another.

Match(Uri, Uri) Match(Uri, Uri) Match(Uri, Uri) Match(Uri, Uri)

Проверяет соответствие объекта Uri шаблону UriTemplate.Attempts to match a Uri to a UriTemplate.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Возвращает строковое представление экземпляра UriTemplate.Returns a string representation of the UriTemplate instance.

Применяется к