Recuperación de elementos que no sean entidades con los servicios de datos REST

El servicio de datos REST permite recuperar no sólo entidades, sino también elementos como colecciones de entidades y propiedades.

Recuperación de una colección de entidades

Un cliente puede utilizar una solicitud RetrieveEntitySet para recuperar un conjunto de entidades de eXtreme Scale. Las entidades se representan como un documento de canal de información Atom o una matriz JSON en la carga útil de la respuesta. Para obtener información detallada sobre el protocolo RetrieveEntitySet definido en WCF Data Services, consulte: MSDN: RetrieveEntitySet Request.

El siguiente ejemplo de solicitud RetrieveEntitySet recupera todas las entidades Order asociadas con la entidad Customer('IBM'). Aquí sólo se muestran los pedidos 5000 y 5001.

AtomPub

  • Método: GET
  • URI de la solicitud: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/orders
  • Cabecera de la solicitud: Accept: application/atom+xml
  • Carga útil de la solicitud: Ninguna
  • Cabecera de la respuesta: Content-Type: application/atom+xml
  • Carga útil de la respuesta:
    <?xml version="1.0" encoding="utf-8"?>
    <feed xml:base = "http://localhost:8080/wxsrestservice/restservice"
    	xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
    			xmlns:m = "http://schemas.microsoft.com/ado/2007/08/dataservices/
    			metadata" xmlns =	"http://www.w3.org/2005/Atom">
        <title type = "text">Order</title>
        <id>http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/
    					Order</id>
        <updated>2009-12-16T22:53:09.062Z</updated>
        <link rel = "self" title = "Order" href = "Order"/>
        <entry>
            <category term = "NorthwindGridModel.Order" scheme = "http://
    						schemas.microsoft.com/
    							ado/2007/08/dataservices/scheme"/>
            <id>http://localhost:8080/wxsrestservice/restservice/
    						NorthwindGrid/Order(orderId=5000,customer_customerId=
    'IBM')</id>
            <title type = "text"/>
            <updated>2009-12-16T22:53:09.062Z</updated>
            <author>
                <name/>
            </author>
            <link rel = "edit" title = "Order" href = "Order(orderId=5000,
    customer_customerId='IBM')"/>
            <link rel = "http://schemas.microsoft.com/ado/2007/08/
    						dataservices/related/customer"
    							type =	"application/atom+xml;type=entry"
    						title = "customer" href = "Order(orderId=5000,
    						customer_customerId='IBM')/customer"/>
            <link rel = "http://schemas.microsoft.com/ado/2007/08/
    						dataservices/related/orderDetails"
    						type = "application/atom+xml;type=feed"
    						title = "orderDetails" href = "Order(orderId=5000,
    									customer_customerId='IBM')/
    								orderDetails"/>
            <content type = "application/xml">
                <m:properties>
                    <d:orderId m:type = "Edm.Int32">5000</d:orderId>
                    <d:customer_customerId>IBM</d:customer_customerId>
                    <d:orderDate m:type = "Edm.DateTime">2009-12-16T19:
    										46:29.562</d:orderDate>
                    <d:shipCity>Rochester</d:shipCity>
                    <d:shipCountry m:null = "true"/>
                    <d:version m:type = "Edm.Int32">0</d:version>
                </m:properties>
            </content>
        </entry>
        <entry>
            <category term = "NorthwindGridModel.Order" scheme = "http://
    schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
            <id>http://localhost:8080/wxsrestservice/restservice/
    						NorthwindGrid/Order(orderId=5001,	customer_customerId='IBM')
    				</id>
            <title type = "text"/>
            <updated>2009-12-16T22:53:09.062Z</updated>
            <author>
                <name/>
            </author>
            <link rel = "edit" title = "Order" href = "Order(orderId=5001,
    customer_customerId='IBM')"/>
            <link rel = "http://schemas.microsoft.com/ado/2007/08/
    							dataservices/related/customer"
    							type =	"application/atom+xml;type=entry"
    							title = "customer" href = "Order(orderId=5001,
    									customer_customerId='IBM')/customer"/>
            <link rel = "http://schemas.microsoft.com/ado/2007/08/
    									dataservices/related/orderDetails"
    							type = "application/atom+xml;type=feed"
    							title = "orderDetails" href = "Order(orderId=5001,
    									customer_customerId='IBM')/orderDetails"/>
            <content type = "application/xml">
                <m:properties>
                    <d:orderId m:type = "Edm.Int32">5001</d:orderId>
                    <d:customer_customerId>IBM</d:customer_customerId>
                    <d:orderDate m:type = "Edm.DateTime">2009-12-16T19:50:
    										11.125</d:orderDate>
                    <d:shipCity>Rochester</d:shipCity>
                    <d:shipCountry m:null = "true"/>
                    <d:version m:type = "Edm.Int32">0</d:version>
                </m:properties>
            </content>
        </entry>
    </feed>
  • Código de respuesta: 200 OK

JSON

  • Método: GET
  • URI de la solicitud: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/orders
  • Cabecera de la solicitud: Accept: application/json
  • Carga útil de la solicitud: Ninguna
  • Cabecera de la respuesta: Content-Type: application/json
  • Carga útil de la respuesta:
    {"d":[{"__metadata":{"uri":"http://localhost:8080/wxsrestservice/
    			restservice/NorthwindGrid/Order(orderId=5000,
    			customer_customerId='IBM')",
    "type":"NorthwindGridModel.Order"},
    "orderId":5000,
    "customer_customerId":"IBM",
    "orderDate":"\/Date(1260992789562)\/",
    "shipCity":"Rochester",
    "shipCountry":null,
    "version":0,
    "customer":{"__deferred":{"uri":"http://localhost:8080/
    			wxsrestservice/restservice/NorthwindGrid/Order(orderId=
    			5000,customer_customerId='IBM')/customer"}},
    "orderDetails":{"__deferred":{"uri":"http://localhost:8080/
    			wxsrestservice/restservice/NorthwindGrid/Order(orderId=
    			5000,customer_customerId='IBM')/orderDetails"}}},
    {"__metadata":{"uri":"http://localhost:8080/wxsrestservice/
    					restservice/NorthwindGrid/
    			Order(orderId=5001,
    			customer_customerId='IBM')",
    "type":"NorthwindGridModel.Order"},
    "orderId":5001,
    "customer_customerId":"IBM",
    "orderDate":"\/Date(1260993011125)\/",
    "shipCity":"Rochester",
    "shipCountry":null,
    "version":0,
    "customer":{"__deferred":{"uri":"http://localhost:8080/
    			wxsrestservice/restservice/NorthwindGrid/Order(orderId=
    			5001,customer_customerId='IBM')/customer"}},
    "orderDetails":{"__deferred":{"uri":"http://localhost:8080/
    			wxsrestservice/restservice/NorthwindGrid/Order(orderId=
    			5001,customer_customerId='IBM')/orderDetails"}}}]}
  • Código de respuesta: 200 OK

Recuperación de una propiedad

Se puede utilizar una solicitud RetrievePrimitiveProperty para obtener el valor de una propiedad de una instancia de entidad de eXtreme Scale. El valor de la propiedad se representa en formato XML para las solicitudes AtomPub y como un objeto JSON para las solicitudes JSON en la carga útil de la respuesta. Si desea más detalles sobre la solicitud RetrievePrimitiveProperty, consulte: MSDN: RetrievePrimitiveProperty Request.

El siguiente ejemplo de solicitud RetrievePrimitiveProperty recupera la propiedad contactName de la entidad Customer('IBM').

AtomPub

  • Método: GET
  • URI de la solicitud: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/contactName
  • Cabecera de la solicitud: Accept: application/xml
  • Carga útil de la solicitud: Ninguna
  • Cabecera de la respuesta: Content-Type: application/atom+xml
  • Carga útil de la respuesta:
    <contactName xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
        John Doe
    </contactName>
  • Código de respuesta: 200 OK

JSON

  • Método: GET
  • URI de la solicitud: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/contactName
  • Cabecera de la solicitud: Accept: application/json
  • Carga útil de la solicitud: Ninguna
  • Cabecera de la respuesta: Content-Type: application/json
  • Carga útil de la respuesta: {"d":{"contactName":"John Doe"}}
  • Código de respuesta: 200 OK

Recuperación del valor de una propiedad

Se puede utilizar una solicitud RetrieveValue para obtener el valor en bruto de una propiedad de una instancia de entidad de eXtreme Scale. El valor de la propiedad se representa como un valor en bruto en la carga útil de la respuesta. Si el tipo de entidad es uno de los siguientes, el tipo de medio de la respuesta será “text/plain”. De lo contrario, el tipo de medio de la respuesta será “application/octet-stream”. Estos tipos son los siguientes:
  • Tipos primitivos Java y sus respectivos derivadores
  • java.lang.String
  • byte[]
  • Byte[]
  • char[]
  • Character[]
  • enums
  • java.math.BigInteger
  • java.math.BigDecimal
  • java.util.Date
  • java.util.Calendar
  • java.sql.Date
  • java.sql.Time
  • java.sql.Timestamp

Si desea más detalles sobre la solicitud RetrieveValue, consulte: MSDN: RetrieveValue Request.

El siguiente ejemplo de solicitud RetrieveValue recupera el valor en bruto de la propiedad contactName de la entidad Customer('IBM').

  • Método de solicitud: GET
  • URI de la solicitud: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/contactName/$value
  • Cabecera de la solicitud: Accept: text/plain
  • Carga útil de la solicitud: Ninguna
  • Cabecera de la respuesta: Content-Type: text/plain
  • Carga útil de la respuesta: John Doe
  • Código de respuesta: 200 OK

Recuperación de un enlace

Se puede utilizar una solicitud RetrieveLink para obtener el enlace o los enlaces que representan una asociación a uno o una asociación a muchos. Para la asociación a uno, el enlace es de una instancia de entidad de eXtreme Scale a otra y el enlace se representa en la carga útil de la respuesta. Para la asociación a muchos, los enlaces son de una instancia de entidad de eXtreme Scale a todas las demás de una colección de entidades de eXtreme Scale especificada y la respuesta se representa como un conjunto de enlaces en la carga útil de la respuesta. Si desea más detalles sobre la solicitud RetrieveLink, consulte: MSDN: RetrieveLink Request.

A continuación se ofrece un ejemplo de solicitud RetrieveLink. En este ejemplo, recuperamos la asociación entre la entidad Order(orderId=5000,customer_customerId='IBM') y su cliente. La respuesta muestra el URI de la entidad Customer.

AtomPub

  • Método: GET
  • URI de la solicitud: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Order(orderId=5000,customer_customerId='IBM')/$links/customer
  • Cabecera de la solicitud: Accept: application/xml
  • Carga útil de la solicitud: Ninguna
  • Cabecera de la respuesta: Content-Type: application/xml
  • Carga útil de la respuesta:
    <?xml version="1.0" encoding="utf-8"?>
    <uri>http://localhost:8080/wxsrestservice/restservice/
    			NorthwindGrid/Customer('IBM')</uri>
  • Código de respuesta: 200 OK

JSON

  • Método: GET
  • URI de la solicitud: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Order(orderId=5000,customer_customerId='IBM')/$links/customer
  • Cabecera de la solicitud: Accept: application/json
  • Carga útil de la solicitud: Ninguna
  • Cabecera de la respuesta: Content-Type: application/json
  • Carga útil de la respuesta: {"d":{"uri":"http:\/\/localhost:8080\/wxsrestservice\/restservice\/NorthwindGrid\/Customer('IBM')"}}

Recuperación de metadatos de servicio

Se puede utilizar una solicitud RetrieveServiceMetadata para obtener el documento de lenguaje de definición de esquema conceptual (CSDL), que describe el modelo de datos asociado al servicio de datos REST de eXtreme Scale. Si desea más detalles sobre la solicitud RetrieveServiceMetadata, consulte: MSDN: RetrieveServiceMetadata Request.

Recuperación de un documento de servicio

Se puede utilizar una solicitud RetrieveServiceDocument para recuperar el documento de servicio que describe la colección de recursos expuestos por el servicio de datos REST de eXtreme Scale. Si desea más detalles sobre la solicitud RetrieveServiceDocument, consulte: MSDN: RetrieveServiceDocument Request.