Recuperando Não Entidades com Serviços de Dados REST

O serviço de dados REST permite recuperar mais que apenas entidades, como coletas e propriedades das entidades.

Recuperar uma Coleta de Entidades

Um Pedido RetrieveEntitySet pode ser usado por um cliente para recuperar um conjunto de entidades do eXtreme Scale. As entidades são representadas como um Atom Feed Document ou uma matriz JSON na carga útil da resposta. Para obter mais detalhes sobre o protocolo RetrieveEntitySet definido em Serviços de Dados WCF, consulte MSDN: Pedido RetrieveEntitySet.

O exemplo de pedido RetrieveEntitySet a seguir recupera todas as entidades Order associadas à entidade Customer('IBM'). Apenas os pedidos 5000 e 5001 são exibidos aqui.

AtomPub

  • Método: GET
  • URI de Pedido: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/orders
  • Cabeçalho do Pedido: Aceitar: application/atom+xml
  • Carga Útil de Pedido: Nenhuma
  • Cabeçalho de Resposta: Conteúdo-Tipo: application/atom+xml
  • Carga Útil de Resposta:
    <?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 Resposta: 200 OK

JSON

  • Método: GET
  • URI de Pedido: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/orders
  • Cabeçalho do Pedido: Aceitar: application/json
  • Carga Útil de Pedido: Nenhuma
  • Cabeçalho de Resposta: Conteúdo-Tipo: application/json
  • Carga Útil de Resposta:
    {"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 Resposta: 200 OK

Recuperar uma Propriedade

Um pedido RetrievePrimitiveProperty pode ser usado para obter o valor de uma propriedade de uma instância de entidade do eXtreme Scale. O valor da propriedade é representado como formato XML para pedidos AtomPub e objeto JSON para pedidos JSON na carga útil de resposta. Para obter mais detalhes sobre o pedido RetrievePrimitiveProperty, consulte MSDN: Pedido RetrievePrimitiveProperty.

O exemplo de pedido RetrievePrimitiveProperty a seguir recupera a propriedade contactName da entidade Customer('IBM').

AtomPub

  • Método: GET
  • URI do pedido: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/contactName
  • Cabeçalho do Pedido: Aceitar: application/xml
  • Carga Útil de Pedido: Nenhuma
  • Cabeçalho de Resposta: Conteúdo-Tipo: application/atom+xml
  • Carga Útil de Resposta:
    <contactName
    xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
        John Doe
    </contactName>
  • Código de Resposta: 200 OK

JSON

  • Método: GET
  • URI do pedido: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/contactName
  • Cabeçalho do Pedido: Aceitar: application/json
  • Carga Útil de Pedido: Nenhuma
  • Cabeçalho de Resposta: Conteúdo-Tipo: application/json
  • Carga Útil de Resposta: {"d":{"contactName":"John Doe"}}
  • Código de Resposta: 200 OK

Recuperar um Valor da Propriedade

Um pedido RetrieveValue pode ser usado para obter o valor bruto de uma propriedade em uma instância de entidade do eXtreme Scale. O valor da propriedade é representado como um valor bruto na carga útil da resposta. Se o tipo de entidade for um dos seguintes, o tipo de mídia da resposta será “text/plain." Caso contrário, o tipo de mídia da resposta será “application/octet-stream." Esses tipos são:
  • Tipos primitivos Java e seus respectivos wrappers
  • 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

Para obter mais detalhes sobre o pedido RetrieveValue, consulte MSDN: Pedido RetrieveValue.

O seguinte exemplo de pedido RetrieveValue recupera o valor bruto da propriedade contactName da entidade Customer('IBM').

  • Método de Pedido: GET
  • URI do Pedido: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/contactName/$value
  • Cabeçalho do Pedido: Aceitar: text/plain
  • Carga Útil de Pedido: Nenhuma
  • Cabeçalho da Resposta: Tipo de Conteúdo: text/plain
  • Carga Útil da Resposta: John Doe
  • Código de Resposta: 200 OK

Recuperar um Link

Um pedido RetrieveLink pode ser utilizado para obter o(s) link(s) representando uma associação para-um ou uma associação para-muitos. Para a associação to-one, o link é de uma instância de Entidade do eXtreme Scale para outra e o link é representado na carga útil da resposta. Para a associação to-many, os links são de uma instância de Entidade do eXtreme Scale para todas as outras em uma coleta de entidades do eXtreme Scale especificadas e a resposta é representada como um conjunto de links na carga útil da resposta. Para obter mais detalhes sobre o pedido RetrieveLink, consulte MSDN: Pedido RetrieveLink.

Veja aqui um exemplo de pedido RetrieveLink. Neste exemplo, recuperamos a associação entre a entidade Order(orderId=5000,customer_customerId='IBM') e seu cliente. A resposta mostra o URI da entidade Customer.

AtomPub

  • Método: GET
  • URI do Pedido: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Order(orderId=5000,customer_customerId='IBM')/$links/customer
  • Cabeçalho do Pedido: Aceitar: application/xml
  • Carga Útil de Pedido: Nenhuma
  • Cabeçalho da Resposta: Tipo de Conteúdo: application/xml
  • Carga Útil de Resposta:
    <?xml version="1.0" encoding="utf-8"?>
    <uri>http://localhost:8080/wxsrestservice/restservice/
    			NorthwindGrid/Customer('IBM')</uri>
  • Código de Resposta: 200 OK

JSON

  • Método: GET
  • URI do Pedido: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Order(orderId=5000,customer_customerId='IBM')/$links/customer
  • Cabeçalho do Pedido: Aceitar: application/json
  • Carga Útil de Pedido: Nenhuma
  • Cabeçalho de Resposta: Conteúdo-Tipo: application/json
  • Carga Útil da Resposta: {"d":{"uri":"http:\/\/localhost:8080\/wxsrestservice\/restservice\/NorthwindGrid\/Customer('IBM')"}}

Recuperar Metadados do Serviço

Um Pedido RetrieveServiceMetadata pode ser usado para obter o documento Conceptual Schema Definition Language (CSDL), que descreve o modelo de dados associado ao serviço de dados REST do eXtreme Scale. Para obter mais detalhes sobre o pedido RetrieveServiceMetadata, consulte MSDN: Pedido RetrieveServiceMetadata.

Recuperar Documento de Serviço

Um Pedido RetrieveServiceDocument pode ser usado para recuperar o Documento de Serviço que descreve a coleta de recursos expostos pelo serviço de dados REST do eXtreme Scale. Para obter mais detalhes sobre o pedido RetrieveServiceDocument, consulte MSDN: Pedido RetrieveServiceDocument.