2016-05-26 4 views
1

ヘッダを使用した場合、Context Brokerはサポートされていないフォーマットを返そうとしますが、/v2/entities/{entityId}/attrs/{attrName}/valueの動作には疑問があります。Accept:*/* `ヘッダで属性値の動作を取得する

curl -v orion:1026/v2/entities/Bcn-Welt/attrs/humidity/value 
* Hostname was NOT found in DNS cache 
*   Trying 172.17.0.13... 
* Connected to orion (172.17.0.13) port 1026 (#0) 
> GET /v2/entities/Bcn-Welt/attrs/humidity/value HTTP/1.1 
> User-Agent: curl/7.35.0 
> Host: orion:1026 
> Accept: */* 
> 
< HTTP/1.1 406 Not Acceptable 
< Connection: Keep-Alive 
< Content-Length: 73 
< Content-Type: application/json 
< Fiware-Correlator: d289fd9e-2329-11e6-88cc-0242ac11000d 
< Date: Thu, 26 May 2016 10:08:41 GMT 
< 
* Connection #0 to host orion left intact 
{"error":"NotAcceptable","description":"accepted MIME types: text/plain"} 

私たちは、明示的にtext/plain形式同意する必要があります:私たちは受け入れられたフォーマットのリストまたは(JSONを除く)にも対応していないフォーマットを提供した場合、アプリケーションが値を返す

curl -v orion:1026/v2/entities/Bcn-Welt/attrs/humidity/value --header "Accept: text/plain" 
* Hostname was NOT found in DNS cache 
*   Trying 172.17.0.13... 
* Connected to orion (172.17.0.13) port 1026 (#0) 
> GET /v2/entities/Bcn-Welt/attrs/humidity/value HTTP/1.1 
> User-Agent: curl/7.35.0 
> Host: orion:1026 
> Accept: text/plain 
> 
< HTTP/1.1 200 OK 
< Connection: Keep-Alive 
< Content-Length: 9 
< Content-Type: text/plain 
< Fiware-Correlator: 70b2a3f8-232b-11e6-a36a-0242ac11000d 
< Date: Thu, 26 May 2016 10:20:16 GMT 
< 
* Connection #0 to host orion left intact 

を。

curl -v orion:1026/v2/entities/Bcn-Welt/attrs/humidity/value --header "Accept: audio/*" 
* Hostname was NOT found in DNS cache 
*   Trying 172.17.0.13... 
* Connected to orion (172.17.0.13) port 1026 (#0) 
> GET /v2/entities/Bcn-Welt/attrs/humidity/value HTTP/1.1 
> User-Agent: curl/7.35.0 
> Host: orion:1026 
> Accept: audio/* 
> 
< HTTP/1.1 200 OK 
< Connection: Keep-Alive 
< Content-Length: 9 
< Content-Type: text/plain 
< Fiware-Correlator: a216e33c-232b-11e6-83f3-0242ac11000d 
< Date: Thu, 26 May 2016 10:21:39 GMT 
< 
* Connection #0 to host orion left intact 
60.000000 

我々は受け入れリストにJSON形式を提供する場合、要求は失敗します。場合によって

curl -v orion:1026/v2/entities/Bcn-Welt/attrs/humidity/value --header "Accept: text/plain" --header "Accept: application/json" 
* Hostname was NOT found in DNS cache 
*   Trying 172.17.0.13... 
* Connected to orion (172.17.0.13) port 1026 (#0) 
> GET /v2/entities/Bcn-Welt/attrs/humidity/value HTTP/1.1 
> User-Agent: curl/7.35.0 
> Host: orion:1026 
> Accept: text/plain 
> Accept: application/json 
> 
< HTTP/1.1 406 Not Acceptable 
< Connection: Keep-Alive 
< Content-Length: 73 
< Content-Type: application/json 
< Fiware-Correlator: 375fb1a8-232c-11e6-a21e-0242ac11000d 
< Date: Thu, 26 May 2016 10:25:49 GMT 
< 
* Connection #0 to host orion left intact 
{"error":"NotAcceptable","description":"accepted MIME types: text/plain"} 

答えて

1

ケース:最初のケースで

  • を、何が起こっていることということですOrion(バージョン1.1以前と同様)最初にがMIMEタイプを選択した場合、は、属性タイプがnまたはnに適合するかどうかを考慮しますot。 Accept: */*を使用すると、application/jsonとtext/plainの結びつきがあり、Orionはapplication/jsonをwinnerとして選択します。次に、属性の値がテキスト性質のものである場合、エラーが返されます。

  • 2番目のケースはおそらくバグです。約an issue at githubを作成しました。

  • 3番目のケースは最初のケースと似ています。 text/plainとapplication/jsonの間にはつながりがあります。オリオンは第二のものを選んだ。次に、属性値を評価すると、application/json MIMEタイプと一致しないことを認識し、エラーを返します。

事実、この手順は、ケース1または3が最良でない場合に実装されます。 Acceptヘッダー内のすべての可能なオプションの中からMIMEタイプを選択する前に、属性タイプをと評価してからを選択する必要があります。属性値がアレイまたはオブジェクトである場合

  • およびヘッダは、アプリケーション/ JSONまたはtext/plainのが含ま受け入れ:私はhere記載されているものを実装するために、平均の応答タイプでJSONとして値を返しますapplication/jsonまたはtext/plain(いずれかがAcceptヘッダーの最初のもの)。

  • は、文字列、数は、nullまたはブール属性値がされている場合:ヘッダーにテキストが含まれ

    • 受け入れる場合/無地他
    • は「受け入れられない406のHTTPエラーを返すテキストとして値を返すには:受け入れMIMEタイプ:text/plainの」

手順は、次のバージョンでオリオンで実装されること。

EDIT:新しい手順は、Orion 1.3.0で実装されています。

+0

ケース3について、私はOrionがAcceptのマルチヘッダーをサポートしているとは不確実です(問題はhttps://github.com/telefonicaid/fiware-orion/issues/2209で作成されています)。カンマ区切りのリスト、つまり「Accept:text/plain、application/json」をサポートしています。おそらく、最後のAcceptヘッダー(application/json)だけが考慮されている可能性がありますので、このケースはケース1と完全に等しくなります。 – fgalan

+0

回答テキストが編集され、新しいプロシージャを実装するOrionバージョンに関する情報が含まれますオリオン1.3.0、7月または8月末までにリリース予定)。 – fgalan

関連する問題