Формат URI для адресации ресурсов (платформа служб данных ADO.NET)
Адресация всех сущностей, доступных в службах данных ADO.NET, выполняется с помощью универсальных кодов ресурсов (URI). В универсальных кодах ресурсов (URI) служб данных ADO.NET используется обычная грамматика URI и протокол HTTP. URI служб данных ADO.NET состоят из трех разделов: корень службы, путь ресурса и параметры запроса, которые вместе составляют URI, используемый для адресации любого ресурса в службах данных ADO.NET.
Корень службы
В разделе корня службы кода URI указывается расположение корня служб данных ADO.NET. Ресурс, связанный с этим корнем служб данных ADO.NET, описывает все наборы EntitySet, AssociationSet и/или операции службы. Допустимыми URI, включающими в себя только элементы схемы и имени службы, являются следующие:
https://www.contoso.com
http://::1:8080/myservice.svc
https://www.contoso.com/path/myservice.svc/
Путь к ресурсу
Элемент пути к ресурсу в коде URI указывает, каким образом могут сочетаться имена набора сущностей, типа сущности, свойства навигации, ссылки навигации, свойства, сложного типа и операции службы для создания URI, идентифицирующего ресурс в службах данных ADO.NET.
С помощью элемента пути к ресурсу в коде URI можно выполнять фильтрацию и просмотр графа сущностей в службе данных. Данный раздел не содержит каких-либо конструкций для изменения формата ответа на запрос указанного кода URI. Дополнительные сведения об изменении формата ответа см. в разделе Параметры запросов служб данных ADO.NET.
Допустимыми URI, включающими в себя элементы схемы, корня службы и пути к ресурсу, являются следующие:
https://www.contoso.com/myservice.svc/Customers
https://www.contoso.com/Customers(123)
https://www.contoso.com/Customers(123)/Orders
https://www.contoso.com/Customers(123)/$links/Orders
https://www.contoso.com/Products(ID=’ABC’)/Category
https://www.contoso.com/Teams(Conference=’ACC’, League=’NCCC’)/Roster
Дополнительные сведения о синтаксисе пути к ресурсу см. в разделе Правила и семантики путей к ресурсам (платформа служб данных ADO.NET).
Параметры запроса
В разделе параметров запроса URI указывается два типа данных: системные параметры запросов и параметры операций службы. Параметры запроса соответствуют следующим правилам:
в одной строке запроса URI можно указывать любое число поддерживаемых параметров запроса;
каждый параметр запроса может быть представлен в строке запроса вне зависимости от наличия другого параметра;
порядок параметров запросов в URI не играет роли;
в именах параметров запросов учитывается регистр букв;
в значениях параметров запросов учитывается регистр букв;
в строке запроса URI определенный системный параметр запроса может быть указан только один раз.
Дополнительные сведения о семантике запросов см. в разделах Параметры запросов служб данных ADO.NETи Системные параметры запросов служб данных ADO.NET.
Примеры
Следующие URI являются примерами синтаксиса служб данных ADO.NET. Для всех них приведено описание их анализа службой.
Из всех элементов Orders
в источнике данных возвращаются только те элементы Orders
, у которых свойство ID
равно 201.
http://host/service.svc/Orders?$filter=ID%20eq%201
Обеспечение соответствия элементам Customers
, у которых свойство fullname
имеет значение «Jones, David».
http://host/service.svc/Customers?$filter=
'Jones, David' eq insert(fullname, length(lastname), ',')
Арифметическое выражение анализируется как «1 + (2 * 3)», а не «(1 + 2) * 3». Критерий фильтра представляет собой просто тестовый случай, результатом вычисления которого всегда будет значение «true», поэтому URI представляет запрос всех элементов OrderLines
.
http://host/service.svc/OrderLines?$filter=1 add 2 mul 3 lt 10
Абстрактный синтаксис
В следующих правилах показаны элементы синтаксиса для построения URI служб данных ADO.NET в соответствии со спецификацией формы Бэкуса-Науэра, определенной в разделе RFC 4234. URI служб данных ADO.NET состоит из трех разделов: корень службы, путь ресурса и параметры запроса, которые вместе могут составлять URI, используемый для адресации любого ресурса в службе данных ADO.NET.
ADO.NET_DS_URI = "http://" serviceRoot [ resourcePath ["?" queryOptions ] ]
ServiceRoot = host [ ":" port ] [*( "/" segment-nz )]
ResourcePath = "/" EntitySet | serviceOperation [ navPath ]
navPath = ("("keyPredicate")" [ navPath_np / propertyPath / propertyPath_ct ] )
navPath_np = "/" ("$links" / NavigationProperty) /
(NavigationProperty [ navPath ])
EntityPropertyPath = "/" EntityProperty [ "/$value" ]
ComplexTypePropertyPath_ct = 1*("/" ComplexType) [ propertyPath ]
keyPredicate = keyPredicate_single | keyPredicate_cmplx
keyPredicate_single = 1*DIGIT | ("’" 1*unreserved "’") | 1*(HEXDIGHEXDIG)) |
keyPredicate_complex
//NOTE: strings, GUIDs and dates are quoted
keyPredicate_cmplx = resourceProp "=" keyPredicate [“,” keyPredicate_cmplx]
queryOptions = sysQueryOperation / serviceOpParamName
*("&" sysQueryOperation / serviceOpParam)
DIGIT = as defined in RFC 3986 (0-9)
Host = as defined in RFC 3986
Port = as defined in RFC 3986
segment-nz = as defined in RFC 3986 (A non empty sequence of chars outside set of URI reserved characters.)
pchar = as defined in RFC 3986 (A non empty sequence of chars outside set of URI reserved characters.)
serviceOperation = the name of a service operation.
EntitySet = the name of an EntitySet. Allowed characters match the set of allowed characters for EntitySet names in the EDM specification.
EntityType = The name of an EntityType within the EntitySet referenced in the prior path segment. Allowed characters match the set of allowed characters for EntityType names in the EDM specification.
Property = The name of a property on the entity type or complex type in the prior path segment or current path segment if filtering by key. Allowed characters match the set of allowed characters for EntityType property names in the EDM specification.
NavigationProperty = the name of a NavigationProperty or Navigation Link on the EntityType in the prior path segment. If the prior segment is an EntitySet,this property must be on the type within the given set. Allowed characters match the set of allowed characters for NavigationProperty names in the EDM specification.
systemQueryOperation = "$" query "=" query
serviceOperationParam = query "=" query
Дополнительные сведения о синтаксисе URI и соответствующие примеры см. в разделе Правила и семантики путей к ресурсам (платформа служб данных ADO.NET).
См. также
Понятия
Правила и семантики путей к ресурсам (платформа служб данных ADO.NET)
Параметры запросов служб данных ADO.NET
Системные параметры запросов служб данных ADO.NET