Partager via


Format d'URI pour l'adressage des ressources (ADO.NET Data Services Framework)

Toutes les entités accessibles dans ADO.NET Data Services sont adressables par URI. Les URI ADO.NET Data Services sont conformes à la grammaire d'URI générique et utilisent le protocole HTTP (Hypertext Transfer Protocol). Ils sont composés de trois sections : racine de service, chemin d'accès de ressource et options de requête, qui forment l'URI utilisé pour adresser toute ressource dans ADO.NET Data Services.

Racine de service

La section « racine de service » de l'URI représente l'emplacement de la racine d'ADO.NET Data Services. La ressource associée à la racine d'ADO.NET Data Services décrit toutes les opérations EntitySet, AssociationSet et/ou opérations de service du service. Voici quelques exemples d'URI valides incluant uniquement les éléments de nom de service et de schéma :

  • https://www.contoso.com

  • http://::1:8080/myservice.svc

  • https://www.contoso.com/path/myservice.svc/

Chemin d'accès de ressource

L'élément « chemin d'accès de ressource » de l'URI indique la façon dont les noms de jeux d'entités, de types d'entités, de liens de navigation, de propriétés, de types complexes et d'opérations de service peuvent être composés afin de générer un URI qui identifie une ressource dans ADO.NET Data Services.

L'élément « chemin d'accès de ressource » de l'URI autorise un filtrage et un parcours du graphique d'entités dans un service de données. Cette section ne contient aucune construction afin de modifier le format de la réponse à une demande à l'URI spécifié. Pour plus d'informations sur la modification du format de réponse, consultez Options de requêtes d'ADO.NET Data Services.

Voici quelques exemples d'URI valides incluant les éléments de schéma, de racine de service et de chemin d'accès de ressource :

  • 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

Pour plus d'informations sur la syntaxe du chemin d'accès de ressource, consultez Règles et sémantique du chemin d'accès aux ressources (ADO.NET Data Services Framework).

Options de requête

La section « options de requête » de l'URI spécifie deux types d'informations : les options de requête système et les paramètres d'opérations de service. Les options de requête respectent les règles suivantes :

  • Il est possible de spécifier n'importe quelle quantité d'options de requête prises en charge dans une chaîne de requête d'URI.

  • Chaque option de requête peut être présente dans une chaîne de requête, indépendamment de la présence de toute autre option.

  • L'ordre des options de requête dans un URI n'est pas significatif.

  • Les noms des options de requête respectent la casse.

  • Les valeurs des options de requête respectent la casse.

  • Une option de requête système spécifique ne peut apparaître qu'une seule fois dans la chaîne de requête d'un URI de demande.

Pour plus d'informations sur la sémantique de requête, consultez Options de requêtes d'ADO.NET Data Services et Options de requête système d'ADO.NET Data Services.

Exemples

Les URI suivants constituent des exemples de syntaxe ADO.NET Data Services. Chacun d'eux inclut une description de la manière dont il est analysé par le service.

Parmi tous les éléments Orders dans la source de données, retourner uniquement l'élément Orders avec une propriété ID égale à 201.

http://host/service.svc/Orders?$filter=ID%20eq%201

Faire correspondre tous les éléments Customers avec la valeur de la propriété fullname égale à 'Jones, David'.

http://host/service.svc/Customers?$filter=
         'Jones, David' eq insert(fullname, length(lastname), ',')

L'expression arithmétique est analysée comme 1 + (2 * 3), plutôt que (1 + 2) * 3. L'expression de filtre est un scénario de test qui a toujours la valeur 'vrai' ; par conséquent, l'URI représente une demande de tous les éléments OrderLines.

http://host/service.svc/OrderLines?$filter=1 add 2 mul 3 lt 10

Syntaxe abstraite

Les règles suivantes illustrent des éléments de syntaxe pour la construction d'un URI ADO.NET Data Services tel que défini dans la spécification de forme Backus–Naur augmentée définie dans la RFC 4234. Un URI ADO.NET Data Services est composé de trois sections : racine de service, chemin d'accès de ressource et options de requête qui, une fois composées, forment l'URI utilisée pour adresser toute ressource dans un service ADO.NET Data Services.

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  

Pour plus d'informations et pour obtenir des exemples de syntaxe d'URI, consultez Règles et sémantique du chemin d'accès aux ressources (ADO.NET Data Services Framework).

Voir aussi

Concepts

Règles et sémantique du chemin d'accès aux ressources (ADO.NET Data Services Framework)
Options de requêtes d'ADO.NET Data Services
Options de requête système d'ADO.NET Data Services