WebSphere® eXtreme Scale REST データ・サービスは、エンティティー、エンティティー・プリミティブ・プロパティーなどの更新要求をサポートします。
UpdateEntity 要求を使用して、既存の eXtreme Scale エンティティーを更新できます。クライアントは、HTTP PUT メソッドを使用して既存の eXtreme Scale エンティティーを置き換えたり、HTTP MERGE メソッドを使用して変更を既存の eXtreme Scale エンティティーにマージしたりすることができます。
エンティティーの更新時に、クライアントは、更新に加えて、そのエンティティーを、単一値 (対 1) アソシエーションを通じて関係付けられている、データ・サービス内の他の既存エンティティーに自動的にリンクさせる必要があるかどうかを指定することができます。
更新するエンティティーのプロパティーは、要求ペイロード内に含まれます。 プロパティーは、REST データ・サービスで構文解析されてから、エンティティーの対応するプロパティーに設定されます。 AtomPub フォーマットの場合、プロパティーは <d:PROPERTY_NAME> XML エレメントとして指定されます。 JSON の場合、プロパティーは JSON オブジェクトのプロパティーとして指定されます。
要求ペイロード内にプロパティーが存在しない場合には、 REST データ・サービスは、エンティティー・プロパティー値を、HTTP PUT メソッドの Java デフォルト値に設定します。 ただし、データベース・バックエンドは、例えばデータベース内で列がヌル可能ではない場合などに、そのようなデフォルト値を拒否する可能性があります。 その場合、500 (Internal Server Error) 応答コードが返されて、Internal Server Error が示されます。 HTTP MERGE 要求ペイロード内にプロパティーが存在しない場合は、REST データ・サービスは既存のプロパティー値を変更しません。
ペイロード内に重複プロパティーが指定されている場合には、最後のプロパティーが使用されます。 同じプロパティー名のそれより前のすべての値は、REST データ・サービスによって無視されます。
存在しないプロパティーがペイロードに含まれている場合には、 REST データ・サービスは 400 (Bad Request) 応答コードを返し、クライアントによって送信された要求の構文が正しくないことが示されます。
リソースのシリアライゼーションの一部として、更新要求のペイロードにエンティティーのキー・プロパティーが含まれている場合には、 エンティティー・キーは不変であるため、REST データ・サービスはそのキー値を無視します。
UpdateEntity 要求の詳細については、MSDN Library: UpdateEntity Request を参照してください。
以下の例の UpdateEntity 要求は、Customer('IBM') の都市名を「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",}
UpdatePrimitiveProperty 要求で、eXtreme Scale エンティティーのプロパティー値を更新できます。更新するプロパティーおよび値は、要求ペイロードに入れます。 eXtreme Scale ではクライアントはエンティティー・キーを変更できないため、プロパティーをキー・プロパティーにすることはできません。
UpdatePrimitiveProperty 要求の詳細については、MSDN Library: UpdatePrimitiveProperty Request を参照してください。
以下に、UpdatePrimitiveProperty 要求の例を示します。 この例では、Customer('IBM') の都市名を「Raleigh」に更新します。
AtomPub
<?xml version="1.0" encoding="ISO-8859-1"?>
<city xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
Raleigh
</city>
JSON
UpdateValue 要求で、eXtreme Scale エンティティーの未加工プロパティー値を更新できます。更新する値は、要求ペイロードで未加工値として表します。 eXtreme Scale ではクライアントはエンティティー・キーを変更できないため、プロパティーをキー・プロパティーにすることはできません。
要求のコンテンツ・タイプは、プロパティー・タイプに応じて、「text/plain」または「application/octet-stream」にすることができます。 詳しくは、REST データ・サービスでの非エンティティーの取得を参照してください。
UpdateValue 要求の詳細については、MSDN Library: UpdateValue Request を参照してください。
以下に、UpdateValue 要求の例を示します。 この例では、Customer('IBM') の都市名を「Raleigh」に更新します。
UpdateLink 要求を使用して、2 つの eXtreme Scale エンティティー・インスタンス間にアソシエーションを設定できます。アソシエーションは、単一値 (対 1) 関係または多値 (対多) 関係にすることができます。
2 つの eXtreme Scale エンティティー・インスタンス間のリンクを更新することで、アソシエーションを設定したり、アソシエーションを削除したりできます。例えば、クライアントが Order(orderId=5000,customer_customerId='IBM') エンティティーと Customer('ALFKI') インスタンスとの間に対 1 アソシエーションを設定する場合、Order(orderId=5000,customer_customerId='IBM') エンティティーと現在関連付けられている Customer インスタンスとの間のアソシエーションを削除する必要があります。
UpdateLink 要求で指定されたエンティティー・インスタンスがいずれも見つからない場合は、 REST データ・サービスは 404 (Not Found) 応答を返します。
存在しないアソシエーションが UpdateLink 要求の URI で指定された場合は、 REST データ・サービスは 404 (Not Found) 応答を返し、リンクが見つからないことが示されます。
UpdateLink 要求ペイロードで指定された URI が、URI で指定されたものと同じエンティティーまたはキーに解決されない場合、eXtreme Scale REST データ・サービスは 400 (Bad Request) 応答を返します。
UpdateLink 要求ペイロードに複数のリンクが含まれている場合は、REST データ・サービスは最初のリンクのみを構文解析します。 残りのリンクは無視されます。
UpdateLink 要求の詳細については、MSDN Library: UpdateLink Request を参照してください。
以下に、UpdateLink 要求の例を示します。 この例では、Order(orderId=5000,customer_customerId='IBM') エンティティーの顧客関係を Customer('IBM') に更新します。
AtomPub
<?xml version="1.0" encoding="ISO-8859-1"?>
<uri>
http://host:1000/wxsrestservice/restservice/NorthwindGrid/Customer('IBM')
</uri>
JSON