Acceso a recursos del servicio de datos (WCF. Data Services)
WCF Data Services admite Open Data Protocol (OData) para exponer los datos como una fuente con recursos direccionables a través de identificadores uniformes de recursos (URI). Estos recursos se representan según las convenciones del modelo entidad-relación de Entity Data Model. En este modelo, las entidades representan unidades operacionales de datos que son tipos de datos en un dominio de aplicación, como clientes, pedidos, elementos y productos. El acceso a los datos de entidad y la modificación de los mismos se realiza usando la semántica de Representational State Transfer (REST), específicamente los verbos HTTP estándar GET, PUT, POST y DELETE.
Direccionar recursos
En OData , podrá direccionar los datos expuestos por el modelo de datos utilizando un URI. Por ejemplo, el siguiente URI devuelve una fuente que representa el conjunto de entidades Customers, que contiene las entradas de todas las instancias del tipo de entidad Customer:
http://services.odata.org/Northwind/Northwind.svc/Customers
Las entidades tienen propiedades especiales denominadas claves de entidad. Una clave de entidad se utiliza para identificar una entidad única de manera unívoca en un conjunto de entidades. Esto le permite direccionar una instancia concreta de un tipo de entidad en el conjunto de entidades. Por ejemplo, el siguiente URI devuelve la entrada de una instancia concreta del tipo de entidad Customer que tiene el valor de clave ALFKI
:
http://services.odata.org/Northwind/Northwind.svc/Customers('ALFKI')
También se pueden direccionar individualmente las propiedades primitivas y complejas de una instancia de entidad. Por ejemplo, el siguiente URI devuelve un elemento XML que contiene el valor de propiedad ContactName
para una entidad Customer concreta:
http://services.odata.org/Northwind/Northwind.svc/Customers('ALFKI')/ContactName
Al incluir el extremo $value en el URI anterior, en el mensaje de respuesta solamente se devuelve el valor de la propiedad primitiva. En el siguiente ejemplo solo se devuelve la cadena "Maria Anders" sin el elemento XML:
http://services.odata.org/Northwind/Northwind.svc/Customers('ALFKI')/ContactName/$value
Las relaciones entre entidades se definen en el modelo de datos mediante asociaciones. Estas asociaciones le permiten direccionar entidades relacionadas mediante propiedades de navegación de una instancia de entidad. Una propiedad de navegación puede devolver una única entidad relacionada, en el caso de una relación de varios a uno, o un conjunto de entidades relacionadas, en el caso de una relación de uno a varios. Por ejemplo, el siguiente URI devuelve una fuente que representa el conjunto de todas las entidades Orders relacionadas con una entidad Customer concreta:
http://services.odata.org/Northwind/Northwind.svc/Customers('ALFKI')/Orders
Las relaciones, que son con frecuencia bidireccionales, están representadas por un par de propiedades de navegación. Al contrario de la relación mostrada en el ejemplo anterior, el siguiente URI devuelve una referencia a la entidad Customer a la que pertenece una entidad Order concreta:
http://services.odata.org/Northwind/Northwind.svc/Orders(10643)/Customer
OData también le permite direccionar recursos basándose en los resultados de expresiones de consulta. Esto permite filtrar conjuntos de recursos en función de una expresión evaluada. Por ejemplo, el siguiente URI filtra los recursos para devolver a la entidad Customer especificada solo las entidades Orders (pedidos) que se han distribuido desde el 22 de septiembre de 1997:
http://services.odata.org/Northwind/Northwind.svc/Customers('ALFKI')/Orders?$filter=ShippedDate gt datetime'1997-09-22T00:00:00'
Para obtener más información, vea OData: URI Conventions.
Opciones de consulta del sistema
OData define un conjunto de opciones de consulta del sistema que puede utilizar para realizar operaciones de consulta tradicionales en los recursos, como filtrar, ordenar y paginar. Por ejemplo, el siguiente URI devuelve el conjunto de todas las entidades Order
, junto con las entidades Order_Detail
relacionadas, cuyo código postal no termina en 100
:
http://services.odata.org/Northwind/Northwind.svc/Orders?$filter=not endswith(ShipPostalCode,'100')&$expand=Order_Details&$orderby=ShipCity
Las entradas de la fuente devuelta se ordenan también en función del valor de la propiedad ShipCity de los pedidos.
WCF Data Services admite las siguientes opciones de consulta del sistema de OData :
Opción de consulta | Descripción |
---|---|
$orderby |
Define un criterio de ordenación predeterminado para las entidades de la fuente devuelta. La siguiente consulta ordena la fuente de los clientes devuelta por provincia y ciudad:
Para obtener más información, vea OData. |
$top |
Especifica el número de entidades que se incluirán en la fuente devuelta. En el siguiente ejemplo se omiten los 10 primeros clientes y, a continuación, se devuelven los 10 siguientes:
Para obtener más información, vea OData: Top System Query Option ($top). |
$skip |
Especifica el número de entidades que se omitirán antes de empezar a devolver las entidades en la fuente. En el siguiente ejemplo se omiten los 10 primeros clientes y, a continuación, se devuelven los 10 siguientes:
Para obtener más información, vea OData: Skip System Query Option ($skip). |
$filter |
Define una expresión que filtra las entidades devueltas en la fuente en función de criterios concretos. Esta opción de consulta admite un conjunto de operadores de comparación lógicos, operadores aritméticos y funciones de consulta predefinidas que se utilizan para evaluar la expresión de filtro. En el siguiente ejemplo se devuelven todos los pedidos cuyo código postal no termina en 100:
Para obtener más información, vea OData: Filter System Query Option ($filter). |
$expand |
Especifica qué entidades relacionadas devuelve la consulta. Las entidades relacionadas se incluyen como una fuente o una entrada alineada con la entidad devuelta por la consulta. En el siguiente ejemplo se devuelve el pedido del cliente 'ALFKI' junto con los detalles de artículos de cada pedido:
Para obtener más información, vea OData: Expand System Query Option ($expand). |
$format |
Especifica el formato de la fuente devuelta. El formato predeterminado de la fuente es Atom. Para obtener más información, vea OData: Format System Query Option ($format). |
$select |
Especifica una proyección que define las propiedades de la entidad devueltas en la proyección. De forma predeterminada, todas las propiedades de una entidad se devuelven en una fuente. La siguiente consulta devuelve solo tres propiedades de la entidad
Para obtener más información, vea OData: Select System Query Option ($select). |
$inlinecount |
Solicita que un recuento del número de entidades devuelto en la fuente se incluya con la fuente. Para obtener más información, vea OData. |
Direccionar relaciones
Además de direccionar conjuntos de entidades e instancias de entidades, OData también le permite direccionar las asociaciones que representan las relaciones entre las entidades. Esta funcionalidad es necesaria para crear o cambiar una relación entre dos instancias de entidades, como el expedidor relacionado con un pedido determinado de la base de datos de ejemplo Northwind. OData admite un operador $link para direccionar específicamente las asociaciones entre las entidades. Por ejemplo, el URI siguiente se especifica en un mensaje de solicitud PUT de HTTP para que se use otro expedidor para el pedido especificado.
http://services.odata.org/Northwind/Northwind.svc/Orders(10643)/$links/Shipper
Para obtener más información, vea OData: Addressing Links between Entries.
Utilizar la fuente devuelta
El URI de un recurso de OData permite direccionar datos de entidad expuestos por el servicio. Al registrar un URI en el campo de dirección de un explorador web, se devuelve una representación de la fuente de OData del recurso solicitado. Para obtener más información, vea el Tutorial rápido de WCF Data Services. Aunque un explorador web puede ser útil para probar que un recurso del servicio de datos devuelve los datos esperados, normalmente el acceso a los servicios de datos de producción -que también pueden crear, actualizar y eliminar datos- se realiza mediante código de aplicación o lenguajes de scripting en una página web. Para obtener más información, vea Usar un servicio de datos en una aplicación cliente (WCF Data Services).