2016-08-27 1 views
1

値とメタデータを更新したい場合は、リクエストボディに属性タイプを設定しないで、属性タイプを "none"に更新すると、情報が失われます。

私はそれが起こるべきかどうかわかりません。 このエンドポイントはPATCH要求を許可しません。

例えば:

私は、温度という属性を持って、そのタイプは「カシアス」です。

PUT http://localhost:1026/v2/entities/Room1/attrs/temperature?type=Room

ボディ:

{ 
"value": 20, 
"metadata":{"han":"solo"} 
} 

のcURLでの表現:この要求の後

curl -X PUT -H "Fiware-Service: teste_1" -H "Content-Type: application/json" -d '{ 
"value": 20, "metadata":{"han":"solo"} 
}' "http://localhost:1026/v2/entities/Room1/attrs/temperature?type=Room" 

、で元それがリクエストボディに存在しないため、 "none"に設定されているため、トリビュートタイプはなくなりました。ボディはnoneに設定されていました。

PS:テキスト/プレーンコンテンツタイプではテストしませんでした。

オリオンコンテキストブローカー情報:

{ 
    "orion" : { 
    "version" : "1.2.0-next", 
    "uptime" : "9 d, 17 h, 27 m, 37 s", 
    "git_hash" : "c1a224db08086751f05d471a8b52c0eaec15f3a5", 
    "compile_time" : "Thu Aug 4 09:04:12 BRT 2016", 
    "compiled_by" : "root" 
} 

}

答えて

1

あなたが交換するPUTをすれば、全体の属性とタイプが実装により、「なし」にリセットされます。

値のみを更新しようとすると、タイプが残ります。

http://localhost:1026/v2/entities/Room1/attrs/temperature/value

+0

ご回答ありがとうございます。 私は理解しますが、そのビューには同意しませんが、 "デフォルトでは実装"によって属性タイプが変更されることはありません。 概念モデルでは、属性タイプは最上位コンセプトの構造を表します。これは、この属性に含まれるデータの構造を記述するための基本的なビルディングブロックです。 矛盾を避けるために、属性タイプの更新(または削除)は、必要な事実が発生したときにアクタから厳密に要求される必要があります。この場合、値とメタデータを更新しているとしても、エンティティタイプも変更したいというわけではありません。 – LeonanCarvalho

+1

これを解決するには、オリオンがPATCH動詞を使用して同じ呼び出しを行う必要があります。 – LeonanCarvalho

+1

はい、同じURLにPATCHメソッドを追加すると、APIの柔軟性が向上します。しかし、現時点では、2つの回避策が考えられます:1)この回答で@ jose-manuel-canteraで記述されたもの、2)あなたの要求に「タイプ」を追加する。 – fgalan

関連する問題