Pedidos de Inserção com Serviço de Dados REST

Um Pedido InsertEntity pode ser usado para inserir uma nova instância de entidade do eXtreme Scale, potencialmente com novas entidades relacionadas, no serviço de dados REST do eXtreme Scale.

Pedido Inserir Entidade

Um Pedido InsertEntity pode ser usado para inserir uma nova instância de entidade do eXtreme Scale, potencialmente com novas entidades relacionadas, no serviço de dados REST do eXtreme Scale. Ao inserir uma entidade, o cliente pode especificar se o recurso ou a entidade devem ser vinculados automaticamente a outras entidades existentes no serviço de dados.

O cliente deve incluir as informações sobre ligação necessárias na representação da relação associada na carga útil do pedido.

Além do suporte à inserção de uma nova instância EntityType (E1), o pedido InsertEntity também permite a inserção de novas entidades relacionadas à E1 (descritas por qualquer relação de entidade) em um único Pedido. Por exemplo, ao inserir um Customer('IBM'), podemos inserir todos os pedidos com Customer('IBM'). Esta forma de um Pedido InsertEntity também é conhecida como inserção profunda. Com uma inserção profunda, as entidades relacionadas devem ser representadas usando a representação sequencial da relação associada com E1 que identifica o link para as entidades relacionadas a serem inseridas.

As propriedades da entidade a ser inserida são especificadas na carga útil do pedido. As propriedades são analisadas pelo serviço de dados REST e configuradas para a propriedade correspondente na instância da entidade. Para o formato AtomPub, a propriedade é especificada como um elemento XML <d:PROPERTY_NAME>. Para JSON, a propriedade é especificada como uma propriedade de um objeto JSON.

Se uma propriedade estiver ausente na carga útil do pedido, o serviço de dados REST irá configurar o valor da propriedade da entidade para o valor padrão java. Entretanto, o banco de dados backend deve rejeitar um valor padrão, por exemplo, se a coluna não for anulável no banco de dados. Um código de resposta 500 será retornado para indicar um erro do Servidor Interno.

Se houver propriedades duplicadas especificadas na carga útil, a última propriedade será utilizada. Todos os valores anteriores para o mesmo nome da propriedade serão ignorados pelo serviço de dados REST.

Se a carga útil contiver uma propriedade não existente, o serviço de dados REST retornará um código de resposta 400 (Pedido Inválido) para indicar que o pedido enviado pelo cliente estava sintaticamente incorreto.

Se as propriedades-chave estiverem ausentes, o serviço de dados REST retornará um código de resposta 400 (Pedido Inválido) para indicar uma propriedade-chave ausente.

Se a carga útil contiver um link para uma entidade relacionada com uma chave não existente, o serviço de dados REST retornará um código de resposta 404 (Não Localizado) para indicar que a entidade vinculada não pode ser localizada.

Se a carga útil contiver um link para uma entidade relacionada com um nome de associação incorreto, o serviço de dados REST retornará um código de resposta 400 (Pedido Inválido) para indicar que o link não pode ser localizado.

Se a carga útil contiver mais de um link para uma relação para-um, o último link será utilizado. Todos os links anteriores para a mesma associação serão ignorados.

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

Um pedido InsertEntity insere uma entidade Customer com a chave 'IBM'.

AtomPub

  • Método: POST
  • URI do pedido: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')
  • Cabeçalho do pedido: Aceitar: application/atom+xml Content-Type: application/atom+xml
  • Carga Útil de Pedido:
    <?xml version="1.0"
    encoding="ISO-8859-1"?>
    <entry
    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">
     <category term="NorthwindGridModel.Customer"
      scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"
    />
    <content type="application/xml">
      <m:properties>
       <d:customerId>Rational</d:customerId>
       <d:city>Rochester</d:city>
       <d:companyName>Rational</d:companyName>
       <d:contactName>John Doe</d:contactName>
       <d:country>USA</d:country>
      </m:properties>
     </content>
    </entry>
  • Cabeçalho de Resposta: Conteúdo-Tipo: application/atom+xml
  • Carga Útil de Resposta:
    <?xml version="1.0"
    encoding="ISO-8859-1"?>
    <entry
    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">
     <category term="NorthwindGridModel.Customer"
      scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"
    />
    <content type="application/xml">
      <m:properties>
       <d:customerId>Rational</d:customerId>
       <d:city>Rochester</d:city>
       <d:companyName>Rational</d:companyName>
       <d:contactName>John Doe</d:contactName>
       <d:country>USA</d:country>
      </m:properties>
     </content>
    </entry>
    Cabeçalho da Resposta:								
    Tipo de Conteúdo: application/atom+xml
    Carga
    Útil de Resposta:
    <?xml version="1.0" encoding="utf-8"?>
    <entry 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">
        <category term = "NorthwindGridModel.Customer" scheme =
    "http://schemas.
    					microsoft.com/ado/2007/08/dataservices/scheme"/>
        <id>http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/
    					Customer('Rational')</id>
        <title type = "text"/>
        <updated>2009-12-16T23:25:50.875Z</updated>
        <author>
            <name/>
        </author>
        <link rel = "edit" title = "Customer" href =
    "Customer('Rational')"/>
        <link rel =
    "http://schemas.microsoft.com/ado/2007/08/dataservices/related/
    				orders" type = "application/atom+xml;type=feed"
    				title = "orders" href = "Customer('Rational')/orders"/>
        <content type="application/xml">
            <m:properties>
                <d:customerId>Rational</d:customerId>
                <d:city>Rochester</d:city>
                <d:companyName>Rational</d:companyName>
                <d:contactName>John Doe</d:contactName>
                <d:country>USA</d:country>
                <d:version m:type = "Edm.Int32">0</d:version>
            </m:properties>
        </content>
    </entry>
  • Código de Resposta: 201 Criado

JSON

  • Método: POST
  • URI do Pedido: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer
  • Cabeçalho do Pedido: Aceitar: application/json Content-Type: application/json
  • Carga Útil de Pedido:
    {"customerId":"Rational",
    "city":null,
    "companyName":"Rational",
    "contactName":"John Doe",
    "country": "USA",}
  • Cabeçalho de Resposta: Conteúdo-Tipo: application/json
  • Carga Útil de Resposta:
    {"d":{"__metadata":{"uri":"http://localhost:8080/wxsrestservice/restservice/
    			NorthwindGrid/Customer('Rational')",
    "type":"NorthwindGridModel.Customer"},
    "customerId":"Rational",
    "city":null,
    "companyName":"Rational",
    "contactName":"John Doe",
    "country":"USA",
    "version":0,
    "orders":{"__deferred":{"uri":"http://localhost:8080/wxsrestservice/restservice/
    			NorthwindGrid/Customer('Rational')/orders"}}}}
  • Código de Resposta: 201 Criado

Pedido Inserir Link

Um Pedido InsertLink pode ser usado para criar um novo Link entre duas instâncias de entidade do eXtreme Scale. A URI do pedido deve resolver para uma associação to-many do eXtreme Scale. A carga útil do pedido contém um único link que aponta para a entidade de destino da associação para-muitos.

Se o URI do pedido InsertLink representar uma associação para-um, o serviço de dados REST retornará uma resposta 400 (Pedido Inválido).

Se o URI do pedido InsertLink apontar para uma associação que não existe, o serviço de dados REST retornará uma resposta 404 (Não Localizado) para indicar que o link não foi localizado.

Se a carga útil contiver um link com uma chave que não existe, o serviço de dados REST retornará uma resposta 404 (Não Localizado) para indicar que a entidade vinculada não pode ser localizada.

Se a carga útil contiver mais de um link, o Serviço de Dados REST do eXtreme Scale analisará o primeiro link. Os links restantes serão ignorados.

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

O seguinte exemplo de pedido InsertLink cria um link de Customer('IBM') para Order(orderId=5000,customer_customerId='IBM').

AtomPub

  • Método: POST
  • URI do Pedido: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/$link/orders
  • Cabeçalho do Pedido: Tipo de Conteúdo: application/xml
  • Carga Útil de Pedido:
    <?xml version="1.0"
    encoding="ISO-8859-1"?>
    <uri>http://host:1000/wxsrestservice/restservice/NorthwindGrid/Order(orderId=
    			5000,customer_customerId='IBM')</uri>
  • Carga Útil de Resposta: Nenhuma
  • Código de Resposta: 204 Nenhum Conteúdo

JSON

  • Método: POST
  • URI do Pedido: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/$links/orders
  • Cabeçalho do Pedido: Tipo de Conteúdo: application/json
  • Carga Útil de Pedido:
    {"uri":
    "http://host:1000/wxsrestservice/restservice/NorthwindGrid/Order(orderId
    				=5000,customer_customerId='IBM')"}
  • Carga Útil de Resposta: Nenhuma
  • Código de Resposta: 204 Nenhum Conteúdo