5.7.更新処理と格納処理 |
---|
5.7.2.Attrrinuteの追加・更新 |
---|
2022年4月11日 |
|||||||||||||||
既に存在するentityに対するAttributeの追加も既に勉強しました。例えば、以下です。 |
|||||||||||||||
curl -iX POST -H "Content-Type: application/json" -d @d:\postrefOffStreetParking002.json http://localhost:1026/v2/entities/urn:ngsi-ld:Store:002/attrs | |||||||||||||||
今度のエンドポイントは"attrs"でした。因みに、"-H"と"--header"は同じ意味です。データとして指定するjson文字列は以下の形式です。 |
|||||||||||||||
{ <Attribute名>:{ "name", "location"など <ValueのType>: "Text", "Relationship"など <Value> "ABC", trueなど } } |
|||||||||||||||
この指定を既に存在するAttributeに実行すると、Attributeの値が更新されます。また、カンマで区切って、複数のAttributeを指定することも可能です。 http動詞にPUTを使用して、Attributeのvalueをエンドポイントに、Valueだけを直接更新することも可能です。 |
|||||||||||||||
curl -X PUT -H 'Content-Type: text/plain' -d 13 http://localhost:1026/v2/entities/urn:ngsi-ld:Refrigerator:002-001/attrs/temperature/value |
|||||||||||||||
PS C:\Users\owner> curl -X PUT -H 'Content-Type: text/plain' -d 13 http://localhost:1026/v2/entities/urn:ngsi-ld:Refrigerator:002-001/attrs/temperature/value PS C:\Users\owner> |
|||||||||||||||
この場合、headerの指定が"text/plain"になっていることに留意が必要です。 ただし、この方法では一つのAttributeしか更新できません。複数のAttributeを更新する場合は、エンドポイントを2つ上の"attrs"にしておいて、http動詞はPATCHを使います。PUTとの違いは、PUTの場合は追加にも更新にも使えましたが、PATCHは更新にしか使えません。例えば以下のようになります。 |
|||||||||||||||
curl -iX PATCH -H "Content-Type: application/json" -d @d:\postrefOffStreetParking002.json http://localhost:1026/v2/entities/urn:ngsi-ld:Store:002/attrs | |||||||||||||||
|
|||||||||||||||
|
|||||||||||||||
2022年4月11日 |
|||||||||||||||
複数のEntityに対し一括して処理(格納や更新)する事をバッチ処理と言います。バッチ処理は"v2/op/update"のエンドポイントに対して行います。幾つかのオプションはjsonの文字列の中に記述します。記述方法は以下となります。 |
|||||||||||||||
{ "actionType": <下記オプションのValue>, "entities":[ {一件目}, {二件目}, ・・・ ] } |
|||||||||||||||
既にappendやappend_strictの例は使用しました。次はupdateの例をご紹介します。まずは、3件のRefrigeratorの温度を書き換えてみましょう。まずはjsonのテキストを以下の通り作ります。 |
|||||||||||||||
{ "actionType": "update", "entities": [ { "id": "urn:ngsi-ld:Refrigerator:002-001", "type": "Refrigerator", "temperature": { "type": "Integer", "value": -10 } }, { "id": "urn:ngsi-ld:Refrigerator:002-002", "type": "Refrigerator", "temperature": { "type": "Integer", "value": -11 } }, { "id": "urn:ngsi-ld:Refrigerator:002-003", "type": "Refrigerator", "temperature": { "type": "Integer", "value": -12 } } ] } |
|||||||||||||||
このjsonをPOSTに食わせます。 |
|||||||||||||||
curl -X POST -H 'Content-Type: application/json' -d @d:\updateRefrigerator002.json 'http://localhost:1026/v2/op/update' | |||||||||||||||
実行後に読み出してみましょう。 |
|||||||||||||||
PS C:\Users\owner> curl -X POST -H 'Content-Type: application/json' -d @d:\updateRefrigerator002.json 'http://localhost:1026/v2/op/update' PS C:\Users\owner> curl -X GET 'http://localhost:1026/v2/entities?type=Refrigerator&options=keyValues' [{"id":"urn:ngsi-ld:Refrigerator:002-001","type":"Refrigerator","description":"店内で一番窓側に設置した冷蔵庫","name":" 窓側","refStore":"urn:ngsi-ld:Store:002","temperature":-10},{"id":"urn:ngsi-ld:Refrigerator:002-002","type":"Refrigerator","description":"店内で中央の冷蔵庫","name":"中央","refStore":"urn:ngsi-ld:Store:002","temperature":-11},{"id":"urn:ngsi-ld:Refrigerator:002-003","type":"Refrigerator","description":"店内で一番奥に設置した冷蔵庫","name":"奥側","refStore":"urn:ngsi-ld:Store:002","temperature":-12}] PS C:\Users\owner> |
|||||||||||||||
3件とも更新されていますね。 因みに、"actionType": "update"の代わりに"actionType": "replace"を指定しても同じ結果が得られる様です。 |
|||||||||||||||
|
|||||||||||||||