Solicitudes de actualización con los servicios de datos REST

El servicio de datos REST de WebSphere eXtreme Scale soporta solicitudes de actualización de entidades, propiedades primitivas de entidades, etc.

Actualización de una entidad

Se puede utilizar una solicitud UpdateEntity para actualizar una entidad existente de eXtreme Scale. El cliente puede utilizar un método HTTP PUT para sustituir una entidad existente de eXtreme Scale o utilizar un método HTTP MERGE para fusionar los cambios en una entidad existente de eXtreme Scale.

Al actualizar la entidad, el cliente puede especificar si la entidad, además de actualizarse, se debe enlazar automáticamente a otras entidades existentes del servicio de datos que se relacionan mediante asociaciones a uno de un solo valor.

La propiedad de la entidad que se debe actualizar se encuentra en la carga útil de la solicitud. El servicio de datos REST analiza la propiedad y luego se define la propiedad correspondiente para ésta en la entidad. Para el formato AtomPub, la propiedad se especifica como un elemento XML <d:PROPERTY_NAME>. Para JSON, la propiedad se especifica como una propiedad de un objeto JSON.

Si falta una propiedad en la carga útil de solicitud, el servicio de datos REST establece el valor de propiedad de entidad en el valor predeterminado Java para el método HTTP PUT. No obstante, el programa de fondo de base de datos puede rechazar este valor predeterminado si, por ejemplo, la columna no puede tener un valor nulo en la base de datos. Entonces se devuelve un código de respuesta de 500 (Error interno de servidor) para indicar un error interno de servidor. Si falta una propiedad en la carga útil de solicitud HTTP MERGE, el servicio de datos REST no cambia el valor de propiedad existente.

Si se han especificado propiedades duplicadas en la carga útil, se utiliza la última propiedad. El servicio de datos REST pasa por alto todos los valores anteriores con el mismo nombre de propiedad.

Si la carga útil contiene una propiedad no existente, el servicio de datos REST devuelve un código de respuesta 400 (Bad Request) para indicar que la solicitud enviada por el cliente era sintácticamente incorrecta.

Como parte de la serialización de un recurso, si la carga útil de una solicitud de actualización contiene cualquiera de las propiedades clave para la entidad, el servicio de datos REST pasa por alto dichos valores clave porque las claves de entidad son inmutables.

Si desea detalles sobre la solicitud UpdateEntity, consulte: MSDN Library: UpdateEntity Request (Biblioteca MSDN: solicitud UpdateEntity).

Una solicitud UpdateEntity actualiza el nombre de ciudad de Customer('IBM') a 'Raleigh'.

AtomPub

  • Método: PUT
  • URI de la solicitud: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')
  • Cabecera de la solicitud: Content-Type: application/atom+xml
  • Carga útil de la solicitud:
    <?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" />
     <title />
     <updated>2009-07-28T21:17:50.609Z</updated>
     <author>
      <name />
     </author>
     <id />
     <content type="application/xml">
      <m:properties>
       <d:customerId>IBM</d:customerId>
       <d:city>Raleigh</d:city>
       <d:companyName>IBM Corporation</d:companyName>
       <d:contactName>Big Blue</d:contactName>
       <d:country>USA</d:country>
      </m:properties>
     </content>
    </entry>
  • Carga útil de la respuesta: Ninguna
  • Código de respuesta: 204 No Content

JSON

  • Método: PUT
  • URI de la solicitud: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')
  • Cabecera de la solicitud: Content-Type: application/json
  • Carga útil de la solicitud:
    {"customerId":"IBM",
    "city":"Raleigh",
    "companyName":"IBM Corporation",
    "contactName":"Big Blue",
    "country":"USA",}
  • Carga útil de la respuesta: Ninguna
  • Código de respuesta: 204 No Content

Actualización de una propiedad primitiva de entidad

La solicitud UpdatePrimitiveProperty puede actualizar un valor de propiedad de una entidad de eXtreme Scale. La propiedad y el valor que se deben actualizar están en la carga útil de la solicitud. La propiedad no puede ser una propiedad clave porque eXtreme Scale no permite que los clientes cambien claves de entidad.

Si desea más detalles sobre la solicitud UpdatePrimitiveProperty, consulte: MSDN Library: UpdatePrimitiveProperty Request (Biblioteca MSDN: solicitud UpdatePrimitiveProperty).

A continuación se ofrece un ejemplo de solicitud UpdatePrimitiveProperty. En este ejemplo, actualizamos el nombre de la ciudad de Customer('IBM') a 'Raleigh'.

AtomPub

  • Método: PUT
  • URI de la solicitud: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/city
  • Cabecera de la solicitud: Content-Type: application/xml
  • Carga útil de la solicitud:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <city xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
    	Raleigh
    </city>
  • Carga útil de la respuesta: Ninguna
  • Código de respuesta: 204 No Content

JSON

  • Método: PUT
  • URI de la solicitud: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/city
  • Cabecera de la solicitud: Content-Type: application/json
  • Carga útil de la solicitud: {"city":"Raleigh"}
  • Carga útil de la respuesta: Ninguna
  • Código de respuesta: 204 No Content

Actualización de un valor de propiedad primitiva de entidad

La solicitud UpdateValue puede actualizar un valor de propiedad si procesar de una entidad de eXtreme Scale. El valor que se debe actualizar se representa como un valor en bruto en la carga útil de la solicitud. La propiedad no puede ser una propiedad clave porque eXtreme Scale no permite que los clientes cambien claves de entidad.

El tipo de contenido de la solicitud puede ser “text/plain” o “application/octet-stream”, según el tipo de propiedad. Para obtener más información, consulte Recuperación de elementos que no sean entidades con los servicios de datos REST.

Si desea más detalles sobre la solicitud UpdateValue, consulte: MSDN Library: UpdateValue Request (Biblioteca MSDN: solicitud UpdateValue).

A continuación se ofrece un ejemplo de solicitud UpdateValue. En este ejemplo, actualice el nombre de ciudad de Customer('IBM') a 'Raleigh'.

  • Método: PUT
  • URI de la solicitud: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/city/$value
  • Cabecera de la solicitud: Content-Type: text/plain
  • Carga útil de la solicitud: Raleigh
  • Carga útil de la respuesta: Ninguna
  • Código de respuesta: 204 No Content

Actualización de un enlace

La solicitud UpdateLink se puede utilizar para establecer una asociación entre dos instancias de entidad de eXtreme Scale. La asociación puede ser una relación de un solo valor (a uno) o una relación de varios valores (a muchos).

La actualización de un enlace entre dos instancias de entidad de eXtreme Scale puede establecer asociaciones o eliminar asociaciones. Por ejemplo, si el cliente establece una asociación a uno entre una entidad Order(orderId=5000,customer_customerId='IBM') y la instancia Customer('ALFKI'), tiene que disociar la entidad Order(orderId=5000,customer_customerId='IBM') y la entidad de la instancia Customer asociada actualmente.

Si cualquiera de las instancias de entidad especificadas en la solicitud UpdateLink no se encuentra, el servicio de datos REST devuelve una respuesta 404 (Not Found).

Si el URI de la solicitud UpdateLink especifica una asociación inexistente, el servicio de datos REST devuelve una respuesta 404 (Not Found) para indicar que el enlace no se encuentra.

Si el URI especificado en la carga útil de la solicitud UpdateLink no se resuelve en la misma entidad o en la misma clave especificada en el URI, si existe, entonces el servicio de datos REST de eXtreme Scale devuelve una respuesta 400 (Bad Request).

Si la carga útil de solicitud UpdateLink contiene varios enlaces, el servicio de datos REST sólo analiza el primer enlace. Los enlaces restantes se pasan por alto.

Si desea más detalles sobre la solicitud UpdateLink, consulte: MSDN Library: UpdateLink Request (Biblioteca MSDN: solicitud UpdateLink).

A continuación se ofrece un ejemplo de solicitud UpdateLink. En este ejemplo, actualizamos la relación de cliente de la entidad Order(orderId=5000,customer_customerId='IBM') y de Customer('IBM') a Customer('IBM').

Recuerde: El ejemplo anterior sólo es ilustrativo. Como todas las asociaciones son normalmente asociaciones de claves para una cuadrícula particionada, el enlace no se puede cambiar.

AtomPub

  • Método: PUT
  • URI de la solicitud: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Order(101)/$links/customer
  • Cabecera de la solicitud: Content-Type: application/xml
  • Carga útil de la solicitud:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <uri>
    	http://host:1000/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')
    </uri>
  • Carga útil de la respuesta: Ninguna
  • Código de respuesta: 204 No Content

JSON

  • Método: PUT
  • URI de solicitud: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Order(orderId=5000,customer_customerId='IBM')/$links/customer
  • Cabecera de la solicitud: Content-Type: application/xml
  • Carga útil de solicitud: {"uri": "http://host:1000/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')"}
  • Carga útil de la respuesta: Ninguna
  • Código de respuesta: 204 No Content