:::

資源路徑

資源路徑位於服務 URI 後面,可用於指定不同的資源。以下列出資源路徑的用法。

用法1:沒有資源路徑


URL模式:SERVICE_ROOT_URL
回應:一個名為value的屬性的 JSON 物件,其中包含 SensorThings 服務的每個實體集合的一個元素。
每個元素應該是一個帶有至少兩個「名稱/值」對的 JSON 物件,其中一個名稱包含實體集合的名稱(例如:Things, Locations, Datastreams, Observations, ObservedPropertiesSensors),以及另一個名稱包含 URL 實體集合,可能是絕對或相對的 URL。

範例:一個沒有資源路徑的SensorThings的請求
請求範例:
http://example.org/v1.0/
回應範例:

回應範例的 Json 文字字串如下:
              {
                  "value": [
                      {
                          "name": "Things",
                          "url": "http://example.org/v1.0/Things"
                      },
                      {
                          "name": "Locations",
                          "url": " http://example.org/v1.0/Locations"
                      },
                      {
                          "name": "Datastreams",
                          "url": " http://example.org/v1.0/Datastreams"
                      },
                      {
                          "name": "Sensors",
                          "url": " http://example.org/v1.0/Sensors"
                      },
                      {
                          "name": "Observations",
                          "url": " http://example.org/v1.0/Observations"
                      },
                      {
                          "name": "ObservedProperties",
                          "url": " http://example.org/v1.0/ObservedProperties"
                      },
                      {
                          "name": "FeaturesOfInterest",
                          "url": " http://example.org/v1.0/FeaturesOfInterest"
                      }
                  ]
              }

用法2:指定一組實體的位置


為了指定一個實體集合,用戶可以將實體集合名稱放在服務 URI 之後。該服務返回具有value屬性的 JSON 物件,內含指定實體集合中實體的列表。

URL模式:SERVICE_ROOT_URI/ENTITY_SET_NAME
回應:強制執行沒有服務驅動分頁時,指定實體中的所有實體(包含所有屬性)的列表。該響應內含該實體集合之實體內容。一個空集合表示該集合未含任何實體。
範例:指定位置給一組實體
請求範例:
http://example.org/v1.0/ObservedProperties
回應範例:

回應範例的 Json 文字字串如下:
  • 計數屬性(@iot.count)代表集合中的實體數量。
  • 當強制執行服務驅動分頁時,nextLink註釋將包含在結果的回應中。
              {
                  "@iot.count":84
                  "value": [
                      {
                          "@iot.id": 1,
                          "@iot.selfLink":"http://example.org/v1.0/ObservedProperties(1)",
                          "Datastreams@iot.navigationLink":"ObservedProperties(1)/Datastreams",
                          "description": "The dew point is the temperature at which the water vapor in air at constant barometric pressure condenses into liquid water at the same rate at which it evaporates.",
                          "name": "DewPoint Temperature",
                          "definition":"http://dbpedia.org/page/Dew_point"
                      },
                      {
                          "@iot.id ": 2,
                          "@iot.selfLink":"http://example.org/v1.0/ObservedProperties(2)",
                          "Datastreams@iot.navigationLink": "ObservedProperties(2)/Datastreams",
                          "description": "Relative humidity is the ratio of the partial pressure of water vapor in an air-water mixture to the saturated vapor pressure of water at a prescribed temperature.",
                          "name": "Relative Humidity",
                          "definition":"http://dbpedia.org/page/Relative_humidity"
                      },
                      {…},
                      {…},
                      {…}
                  ] "@iot.nextLink":"http://example.org/v1.0/ObservedProperties?$top=5&$skip=5"
              }

用法3:指定實體的位置


用戶可以通過將實體的唯一標識符放置在小括號“()”之後並放在實體集合名稱後面,來指定實體集中的特定實體。該服務將返回具有其所有屬性的實體。

URL模式:SERVICE_ROOT_URI/ENTITY_SET_NAME(ID_OF_THE_ENTITY)
回應:實體的JSON物件(及其所有屬性),用於在實體集中保存指定的ID。
範例:取得Thing id為1之實體的範例請求
請求範例:
http://example.org/v1.0/Things(1)

用法4:指定實體屬性的位置


用戶可以通過在實體的 URI 之後加入屬性名稱來指定實體的屬性。該服務然後返回指定屬性的值。如果該屬性具有複雜的類型值,那麼可以通過進一步的屬性名稱組合來指定該值的屬性。如果該屬性是單值且具有空值,則服務應以 204 無內容作出回應。如果該屬性不可用(例如由於權限),則該服務應以 404 Not Found 回應。

URL模式:SERVICE_ROOT_URI/RESOURCE_PATH_TO_AN_ENTITY/PROPERTY_NAME
回應:在實體集中保存id的實體的指定屬性。
範例:指定實體屬性的範例請求
請求範例:
http://example.org/v1.0/Observations(1)/resultTime
回應範例:

回應範例的 Json 文字字串如下:
              {
                  "resultTime": "2010-12-23T10:20:00-07:00"
              }

用法5:指定實體屬性的值


為了指定原始屬性的原始值,客戶端將包含字符串$value的路徑段附加到屬性 URL。
其中,TM_Object 類型的默認格式是使用ISO8601格式的text/plain格式,例如 TM_Period 的 2014-03-01T13:00:00Z / 2015-05-11T15:30:00Z 和 TM_Instant 的 2014-03-01T13:00:00Z。

URL模式:SERVICE_ROOT_URI/ENTITY_SET_NAME(ID_OF_THE_ENTITY)/PROPERTY_NAME/$value
回應:在實體集合中具特定id的實體之指定屬性的原始值。
範例:指定實體屬性的範例請求
請求範例:
http://example.org/v1.0/Observations(1)/resultTime/$value
回應範例:

範例回應的原始值如下:
2015-01-12T23:00:13-07:00

用法6:指定導航屬性之位置(navigationLink)


由於不同實體集合中的實體可能存在一些關係,因此用戶可以通過實體的導航屬性來請求鏈接的實體。該服務將返回與指定實體保持特定關係的一個或多個實體。

URL模式:SERVICE_ROOT_URI/ENTITY_SET_NAME(ID_OF_THE_ENTITY)/LINK_NAME
回應:與指定實體保持一定關係的一個實體或多個實體。
範例:針對導航屬性之位置的請求範例
請求範例:
http://example.org/v1.0/Datastreams(1)/Observations
回應說明:
返回包含 id 為 1 的 Datastream 中的所有 Observations

用法7:指定至與一個實體鏈結的其他實體關係(associationLink


由於不同實體集合中的實體可能存在一些關係,因此用戶可以通過指定實體的關聯鏈接來請求鏈接實體的自鏈接。associationLink 可用於檢索對與當前實體相關的實體或實體集合的引用。解析相關鏈接時,僅返回相關實體的自鏈接。

URL模式:SERVICE_ROOT_URI/ENTITY_SET_NAME(KEY_OF_THE_ENTITY)/LINK_NAME/$ref
回應:具有值屬性的JSON物件。value屬性的值是一個JSON數組,每個associationLink包含一個元素。每個元素都是一個帶有「名稱/值」對的JSON物件。名稱是url,值是相關實體的selfLinks
範例:指定關聯鏈接到associationLink的範例
請求範例:
http://example.org/v1.0/Datastreams(1)/Observations/$ref
回應範例:

回應範例的 Json 文字字串如下:
              {
                  "value": [
                      {
                          "@iot.selfLinks": "http://example.org/v1.0/Observations(1)"
                      },
                      {
                          "@iot.selfLinks": "http://example.org/v1.0/Observations(2)"
                      }
                  ]
              }

用法8:嵌套資源路徑


由於用戶可以使用導航屬性從一個實體集鏈接到另一個實體集,因此用戶可以使用唯一標識符,屬性或鏈接(即用法3、4和6)進一步擴展資源路徑。

範例:嵌套資源路徑的例子
請求範例1:
http://example.org/v1.0/Datastreams(1)/Observations(1)
回應說明:
Datastream 中回傳一個特定的 Observation 實體。

請求範例2:
http://example.org/v1.0/Datastreams(1)/Observations(1)/resultTime
回應說明:
Datastream 中轉換指定 ObservationresultTime 屬性。

請求範例3:
http://example.org/v1.0/Datastreams(1)/Observations(1)/FeatureOfInterest
回應說明:
返回 Datastream 中指定 ObservationFeatureOfInterest 實體。