Le service de données REST de WebSphere eXtreme Scale prend en charge les demandes de mise à jour d'entités, de propriétés primitives d'entités, etc.
Une demande UpdateEntity permet de mettre à jour une entité eXtreme Scale existante. Le client peut utiliser une méthode HTTP PUT pour remplacer une entité eXtreme Scale existante ou utiliser une méthode HTTP MERGE pour fusionner les modifications dans une entité eXtreme Scale existante.
Lors de la mise à jour de l'entité, le client peut indiquer si l'entité, en plus d'être mise à jour, doit être automatiquement associée aux autres entités existantes du service de données, qui sont associées par des associations to-one à une seule valeur.
La propriété de l'entité à mettre à jour se trouve dans la charge de la demande. La propriété est analysée par le service de données REST, puis définie en fonction de la propriété correspondante sur l'entité. Pour le format AtomPub, la propriété est spécifiée comme un élément XML <d:NOM_PROPRIETE>. Pour JSON, la propriété est spécifiée comme une propriété d'un objet JSON.
Si une propriété est manquante dans la charge de la demande, le service de données REST spécifie comme valeur de propriété d'entité la valeur par défaut Java de la méthode HTTP PUT. Toutefois, le système dorsal de la base de données peut rejeter une telle valeur par défaut si, par exemple, la colonne n'admet pas la valeur null dans la base de données. Le code de réponse 500 (Erreur de serveur interne) est renvoyé pour indiquer une erreur de serveur interne. Si une propriété est manquante dans la charge de la demande HTTP MERGE, le service de données REST ne modifie pas la valeur de propriété existante.
Si des propriétés sont spécifiées en double dans la charge, la dernière propriété est utilisée. Toutes les valeurs précédentes possédant le même nom de propriété sont ignorées par le service de données REST.
Si la charge contient une propriété inexistante, le service de données REST renvoie un code de réponse 400 (Demande incorrecte) pour indiquer que la demande envoyée par le client est syntaxiquement incorrecte.
Dans le cadre de la sérialisation d'une ressource, si la charge d'une demande de mise à jour contient l'une des propriétés de clé de l'entité, le service de données REST ignore ces valeurs de clé car les clés d'entité ne peuvent pas être modifiées.
Pour des détails sur la demande UpdateEntity, voir MSDN Library: UpdateEntity Request.
Une demande UpdateEntity met à jour le nom de la ville de Customer('IBM'), en spécifiant 'Raleigh'.
AtomPub
<?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>
JSON
{"customerId":"IBM",
"city":"Raleigh",
"companyName":"IBM Corporation",
"contactName":"Big Blue",
"country":"USA",}
La demande UpdatePrimitiveProperty peut mettre à jour la valeur d'une propriété d'entité eXtreme Scale. La propriété et la valeur à mettre à jour se trouvent dans la charge de la demande. La propriété ne peut pas être une propriété de clé car eXtreme Scale ne permet pas aux clients de modifier les clés d'entité.
Pour plus de détails sur la demande UpdatePrimitiveProperty, voir MSDN Library: UpdatePrimitiveProperty Request.
Voici un exemple de demande UpdatePrimitiveProperty. Dans cet exemple, nous mettons à jour le nom de la ville du Customer('IBM') en spécifiant 'Raleigh'.
AtomPub
<?xml version="1.0" encoding="ISO-8859-1"?>
<city xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
Raleigh
</city>
JSON
La demande UpdateValue peut mettre à jour une valeur de propriété brute d'une entité eXtreme Scale. La valeur à mettre à jour est représentée comme valeur brute dans la charge de la demande. La propriété ne peut pas être une propriété de clé car eXtreme Scale ne permet pas aux clients de modifier les clés d'entité.
Le type de contenu de la demande peut être “text/plain” ou “application/octet-stream” suivant le type de propriété. Pour plus d'informations, voir Extraction d'éléments autres que des entités à l'aide des services de données REST.
Pour plus de détails sur la demande UpdateValue, voir MSDN Library: UpdateValue Request
Voici un exemple de demande UpdateValue. Dans cet exemple, nous mettons à jour le nom de la ville de Customer('IBM') en spécifiant 'Raleigh'.
La demande UpdateLink permet d'établir une association entre deux eXtreme Scale instances d'entités. L'association peut être une relation à valeur unique (to-one) ou à plusieurs valeurs (to-many).
La mise à jour d'une liaison entre deux instances d'entité eXtreme Scale peut établir des associations ou en supprimer. Par exemple, si le client établit une association to-one entre une entité Order(orderId=5000,customer_customerId='IBM') et une instance Customer('ALFKI'), il doit dissocier l'entité Order(orderId=5000,customer_customerId='IBM') et l'entité de l'instance Customer actuellement associée.
Si l'une des instances d'entité spécifiées dans la demande UpdateLink est introuvable, le service de données REST renvoie une réponse 404 (Introuvable).
Si l'URI de la demande UpdateLink spécifie une association inexistante, le service de données REST renvoie une réponse 404 (Introuvable) pour indiquer que le lien est introuvable.
Si l'URI spécifié dans la charge de la demande UpdateLink ne se résout pas dans la même entité ou dans la même clé que celle spécifiée dans l'URI, si elle existe, le service de données REST d'eXtreme Scale renvoie une réponse 400 (bad request).
Si la charge de la demande UpdateLink contient plusieurs liaisons, le service de données REST n'analyse que la première. Les autres liens sont ignorés.
Pour plus de détails sur la demande UpdateLink, voir MSDN Library: UpdateLink Request.
Voici un exemple de demande UpdateLink. Dans cet exemple, nous mettons à jour la relation client de l'entité Order(orderId=5000,customer_customerId='IBM') et de Customer('IBM') vers Customer('IBM').
AtomPub
<?xml version="1.0" encoding="ISO-8859-1"?>
<uri>
http://host:1000/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')
</uri>
JSON