Anforderungen mit REST-Datenservices aktualisieren

Der REST-Datenservice von WebSphere eXtreme Scale unterstützt Aktualisierungsanforderungen für Entitäten, Entitätsbasiseigenschaften usw.

Entität aktualisieren

Eine Anforderung "UpdateEntity" kann verwendet werden, um eine vorhandene eXtreme-Scale-Entität zu aktualisieren. Der Client kann eine HTTP-PUT-Methode verwenden, um eine vorhandene Entität von eXtreme Scale zu ersetzen. Mit einer HTTP-MERGE-Methode können Sie die Änderungen in eine vorhandene eXtreme-Scale-Entität aufnehmen.

Beim Aktualisieren der Entität kann der Client angeben, ob die Entität, zusätzlich zur Aktualisierung, automatisch mit anderen vorhandenen Entitäten im Datenservice verbunden werden soll, die über einwertige (:1)-Assoziationen miteinander in Bezug stehen.

Die zu aktualierende Eigenschaft der Entität ist in den Nutzdaten der Anforderung enthalten. Die Eigenschaft wird vom REST-Datenservice geparst und anschließend auf die entsprechende Eigenschaft in der Entität gesetzt. Für das AtomPub-Format wird die Eigenschaft mit dem XML-Element <d:PROPERTY_NAME> angegeben. Für JSON wird die Eigenschaft als Eigenschaft eines JSON-Objekts angegeben.

Wenn eine Eigenschaft in den Nutzdaten der Anforderung fehlt, setzt der REST-Datenservice den Entitätseigenschaftswert auf den Java-Standardwert für die HTTP-PUT-Methode. Das Datenbank-Back-End kann einen solchen Standardwert jedoch zurückweisen, wenn die Spalte in der Datenbank beispielsweise keine Nullwerte enthalten kann. Anschließend wird ein Antwortcode 500 (Interner Serverfehler) zurückgegeben. Wenn eine Eigenschaft in den Nutzdaten der HTTP-MERGE-Anforderung fehlt, ändert der REST-Datenservice den vorhandenen Eigenschaftswert nicht.

Sind Eigenschaften in den Nutzdaten doppelt angegeben, wird die letzte Eigenschaft verwendet. Alle vorherigen Werte mit demselben Eigenschaftsnamen werden vom REST-Datenservice ignoriert.

Wenn die Nutzdaten eine nicht vorhandene Eigenschaft enthalten, gibt der REST-Datenservice einen Antwortcode 400 (Ungültige Anforderung) zurück, um anzuzeigen, dass die vom Client gesendete Anforderung syntaktisch falsch ist.

Wenn die Nutzdaten einer Update-Anforderung bei der Serialisierung einer Ressource Schlüsseleigenschaften für die Entität enthalten, ignoriert der REST-Datenservice diese Schlüsselwerte, da Entitätsschlüssel unveränderlich sind.

Einzelheiten zur Anforderung "UpdateEntity" finden Sie auf der Webseite MSDN Library: UpdateEntity Request.

Eine Anforderung "UpdateEntity" aktualisiert den Namen der Stadt für Customer('IBM') in 'Raleigh'.

AtomPub

  • Methode: PUT
  • Anforderungs-URI: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')
  • Anforderungsheader: Content-Type: application/atom+xml
  • Nutzdaten der Anforderung:
    <?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>
  • Nutzdaten der Antwort: Ohne
  • Antwortcode: 204 Kein Inhalt

JSON

  • Methode: PUT
  • Anforderungs-URI: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')
  • Anforderungsheader: Content-Type: application/json
  • Nutzdaten der Anforderung:
    {"customerId":"IBM",
    "city":"Raleigh",
    "companyName":"IBM Corporation",
    "contactName":"Big Blue",
    "country":"USA",}
  • Nutzdaten der Antwort: Ohne
  • Antwortcode: 204 Kein Inhalt

Entitätsbasiseigenschaft aktualisieren

Die Anforderung "UpdatePrimitiveProperty" kann einen Eigenschaftswert einer eXtreme-Scale-Entität aktualisieren. Die Eigenschaft und der Wert, die aktualisiert werden sollen, sind in den Nutzdaten der Anforderung enthalten. Die Eigenschaft kann keine Schlüsseleigenschaft sein, da eXtreme Scale nicht zulässt, dass Clients Entitätsschlüssel ändern.

Weitere Einzelheiten zur Anforderung "UpdatePrimitiveProperty" finden Sie auf der Webseite MSDN Library: UpdatePrimitiveProperty Request.

Im Folgenden finden Sie ein Beispiel für eine Anforderung "UpdatePrimitiveProperty". In diesem Beispiel wird der Name der Stadt für Customer('IBM') in 'Raleigh' geändert.

AtomPub

  • Methode: PUT
  • Anforderungs-URI: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/city
  • Anforderungsheader: Content-Type: application/xml
  • Nutzdaten der Anforderung:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <city xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
    	Raleigh
    </city>
  • Nutzdaten der Antwort: Ohne
  • Antwortcode: 204 Kein Inhalt

JSON

  • Methode: PUT
  • Anforderungs-URI: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/city
  • Anforderungsheader: Content-Type: application/json
  • Nutzdaten der Anforderung: {"city":"Raleigh"}
  • Nutzdaten der Antwort: Ohne
  • Antwortcode: 204 Kein Inhalt

Wert einer Entitätsbasiseigenschaft aktualisieren

Die Anforderung "UpdateValue" kann einen unaufbereiteten Eigenschaftswert einer eXtreme-Scale-Entität aktualisieren. Der zu aktualisierende Wert wird in den Nutzdaten der Anforderung als unaufbereiteter Wert dargestellt. Die Eigenschaft kann keine Schlüsseleigenschaft sein, da eXtreme Scale nicht zulässt, dass Clients Entitätsschlüssel ändern.

Der Inhaltstyp der Anforderung kann je nach Eigenschaftstyp "text/plain" oder "application/octet-stream" sein. Weitere Informationen finden Sie im Abschnitt Daten, die keine Entitäten sind, mit dem REST-Datenservice abrufen.

Weitere Einzelheiten zur Anforderung "UpdateValue" finden Sie auf der Webseite MSDN Library: UpdateValue Request.

Im Folgenden finden Sie ein Beispiel für eine Anforderung "UpdateValue". In diesem Beispiel wird der Name der Stadt von Customer('IBM') in 'Raleigh' aktualisiert.

  • Methode: PUT
  • Anforderungs-URI: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')/city/$value
  • Anforderungsheader: Content-Type: text/plain
  • Nutzdaten der Anforderung: Raleigh
  • Nutzdaten der Antwort: Ohne
  • Antwortcode: 204 Kein Inhalt

Verbindung aktualisieren

Die Anforderung "UpdateLink" kann verwendet werden, um eine Assoziation zwischen zwei eXtreme Scale Entitätsinstanzen herzustellen. Die Assoziation kann eine Einzelwert- (:1) oder Mehrwertbeziehung (:n) sein.

Durch die Aktualisierung einer Verbindung zwischen zwei eXtreme-Scale-Entitätsinstanzen könnnen Assoziationen hergestellt oder entfernt werden. Wenn der Client beispielsweise eine :1-Assoziation zwischen einer Entität Order(orderId=5000,customer_customerId='IBM') und der Instanz Customer('ALFKI') herstellt, muss er die Zuordnung der Entität Order(orderId=5000,customer_customerId='IBM') zur momentan zugeordneten Customer-Instanz aufheben.

Wenn eine der in der UpdateLink-Anforderung angegebenen Entitätsinstanzen nicht gefunden wird, gibt der REST-Datenservice eine Antwort 404 (Nicht gefunden) zurück.

Wenn im URI der Anforderung "UpdateLink" eine nicht vorhandene Assoziation angegeben ist, gibt der REST-Datenservice eine Antwort 404 (Nicht gefunden) zurück, um anzuzeigen, dass die Verbindung nicht gefunden wurde.

Wenn der in den Nutzdaten der Anforderung "UpdateLink" angegebene URI nicht in dieselbe Entität oder denselben Schlüssel aufgelöst werden kann, die bzw. der im URI (sofern vorhanden) angegeben ist, gibt der REST-Datenservice von eXtreme Scale eine Antwort 400 (Ungültige Anforderung) zurück.

Wenn die Nutzdaten der UpdateLink-Anforderung mehrere Verbindungen enthalten, parst der REST-Datenservice nur die erste Verbindung. Die restlichen Verbindungen werden ignoriert.

Weitere Einzelheiten zur Anforderung "UpdateLink" finden Sie auf der Webseite MSDN Library: UpdateLink Request.

Im Folgenden finden Sie ein Beispiel für eine Anforderung "UpdateLink". In diesem Beispiel wird die Customer-Relation der Entität Order(orderId=5000,customer_customerId='IBM') von Customer('IBM') in Customer('IBM') aktualisiert.

Hinweis: Das vorherige Beispiel dient nur der Veranschaulichung. Da alle Assoziationen gewöhnlich Schlüsselassoziationen für ein partitioniertes Grid sind, kann die Verbindung nicht geändert werden:

AtomPub

  • Methode: PUT
  • Anforderungs-URI: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Order(101)/$links/customer
  • Anforderungsheader: Content-Type: application/xml
  • Nutzdaten der Anforderung:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <uri>
    	http://host:1000/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')
    </uri>
  • Nutzdaten der Antwort: Ohne
  • Antwortcode: 204 Kein Inhalt

JSON

  • Methode: PUT
  • Anforderungs-URI: http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/Order(orderId=5000,customer_customerId='IBM')/$links/customer
  • Anforderungsheader: Content-Type: application/xml
  • Nutzdaten der Anforderung: {"uri": "http://host:1000/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')"}
  • Nutzdaten der Antwort: Ohne
  • Antwortcode: 204 Kein Inhalt