Aracılığıyla paylaş


Hava durumu uzantısı yazma

Bu bölümde, kendi hava durumu uzantınızı yazmak için adım adım bir kılavuz görürsünüz.

Hava durumu uzantısı nedir?

Tarım için Data Manager'daki hava durumu uzantısı, API'lerle ilgili tüm ayrıntıları ve her API yanıtı (çıktı) için bir şablon sağlayan bir bildirim (JSON) dosyasıdır. Bu nedenle uzantı dosyası, API giriş (istek) ve çıkış (yanıt) özelliklerini anlaması için Tarım için Data Manager tarafından tanımlanan bir API şablonu yapısıdır.

Hava durumu uzantısı yapısı

Üst düzey bir uzantı dosyası iki şeyden oluşan bir JSON dosyasıdır:

  • Sağlayıcı meta verileri (JSON Nesnesi)
  • API Bilgileri (JSON Dizisi)

Sağlayıcı meta verileri

Bir uzantıyı ve sürüm oluşturma bilgilerini benzersiz olarak tanımlamak için gereken aşağıdaki alanlarda ayrıntıları sağlayan bir json nesnesidir. Uzantının bu bölümünde sağlanan ayrıntılar, Tarım marketi için Data Manager'daki dış müşterilere gösterilir. Bu nedenle extensionId & extensionName (kolay tanımlama için) ve description (değer teklifi için) müşteri odaklı olmalıdır.

Örnek sağlayıcı meta verileri

"provider": {
    "extensionId": "abc.weather", 
    "extensionName": "ABC weather",
    "description": "Get Weather data from ABC weather into Azure Data Manager for Agriculture platform using this extension",
    "dataCategory": "Weather",
    "farmBeatsSchemaVersion": "1.0",
    "extensionVersion": "1.0",
    "supportUrl": "www.abc.com/support",
    "supportEmail": "support@abc.com"
  }
Sağlayıcı meta veri ayrıntıları
Adı Tür Açıklama
extensionId Dize Kuruluş adı (Contoso) ve hizmet (hava durumu) biçiminde sağlanan kimlik Ex: org.service. extensionId, uzantının benzersiz tanımlayıcısı ve kullanıcıların uzantı API'leriyle etkileşime geçmek için Tarım için Data Manager platformunda kullandığı tanımlayıcıdır
extensionName Dize Tarım için Data Manager uzantısı marketinde kullanılacak uzantının adı.
açıklama Dize Uzantı tarafından sunulan özellikleri ve hizmetleri belirten açıklama.
dataCategory Dize Hava durumu uzantıları için kullanın weather.
farmBeatsSchemaVersion Dize Tarım için Veri Yöneticisi tarafındaki bildirim dosyasının sürümü. Mevcut bildirim dosyasında yapılan tüm güncelleştirmeler, bu alanın yeni bir sürüm güncelleştirmesine yol açar.
extensionVersion Dize Uzantı dosyasının sürümü. ile 1.0başlayarak. Uzantı dosyanıza Güncelleştirmeler, ana ve ikincil güncelleştirmelerin kuralına göre bu sürüm numarasını artırır.
Supporturl Dize Destek sorguları ve SSS oluşturmaya yönelik web sitesi bağlantısı
supportEmail Dize Destek sorgularında gönderilecek e-posta.

API bilgileri

API Information JSON dizisi (apiInfos) aşağıdaki yapısal öğelere daha fazla bölünebilir.

  • API meta verileri
  • Kimlik doğrulama parametreleri
  • API giriş parametreleri
  • Ayıklanan API giriş parametreleri
  • İşlevsel parametreler
  • Birim sistemi
  • Platform & Özel parametreler
  • Platform & Özel şablon

API meta verileri

Bu bölüm, Tarım için Data Manager tarafından api'yi tanımlamak apiName (kullanıcılar tarafından açıkça çağrılır) ve API isteğini uygun requestTypetemelinde sağa endpoint yönlendirmek için kullanılan API ile ilgili temel bilgilerden oluşur.

Örnek API meta verileri
"apiInfos": [
    {
          "apiName": "dailyforecast",
          "description": "The Daily Forecast API",
          "endpoint": "https://ag.us.clearapis.com/v1.1/forecast/daily",
          "requestType": "GET",
          "isLoadAPI": "false",
          "typeOfData": "forecast",
          "granularity": "daily",
          "defaultUnitSystem": "us"
    }
]
API meta veri ayrıntıları
Adı Tür Açıklama
apiInfos dizi Her API'nin dizi içindeki apiInfos bir nesne olduğu JSON nesne dizisi.
apiName Dize Uzantı tarafından desteklenen API Adı, kullanıcıların uzantı API'lerine çağıracağı tam addır. LÜTFEN API belgelerinizde bahsedilen adlandırma kuralının aynısını izleyin.
açıklama Dize API açıklaması
endpoint Dize Tarım için Data Manager'ın çağrısı apiNameiçin API uç noktası.
Requesttype Dize GET veya POST PUT tarafından apiNamedesteklenen istek türü.
isLoadAPI boolean apiName geçerli hava durumu verileri gibi bir geçiş API'yse, bu anahtarı olarak falseoluşturun. Tüm yük API'leri (geçmiş ve tahmin) için bu alanı olarak truetutun. isLoadAPI Anahtar olduğunda falseAPI yanıtı doğrudan kullanıcıya gönderilir ve Tarım için Veri Yöneticisi depolama hizmetinde depolanmaz.
typeOfData Dize Şu anda desteklenen değerler ve Forecast'tirHistorical.
Taneciklilik Dize Şu anda desteklenen değerler ve Hourly'tirDaily.
defaultUnitSystem Dize tarafından apiNamedesteklenen varsayılan birim sisteminin adını belirtin.

Kimlik doğrulama parametreleri

Bu bölüm, tarafından apiNamedesteklenen kimlik doğrulamasıyla ilgili parametreleri alır. Tarım için Data Manager, API üst bilgisi bölümünde iki tür kimlik doğrulamasıyla ilgili anahtarı (x-ms-farmBeats-data-provider-id & x-ms-farmBeats-data-provider-key) desteklediğinden, uzantı dosyasının ilgili kimlik doğrulama anahtarlarının anahtar adını açıkça tarafından istendiği apiNameşekilde sağlaması gerekir.

Tarım için Veri Yöneticisi, kimlik doğrulama bilgilerini API üst bilgisi (Hava Durumu İşi Oluşturma API'sinde) aracılığıyla toplar. Kimlik doğrulama parametresi eşlemesi, Tarım için Veri Yöneticisi'nin anahtarı gerektiğinde uzantıya uygun şekilde geçirebilmesini sağlamak için yapılır.

Örnek kimlik doğrulama parametreleri
"apiInfos": [
    "authInputParameters": [
        {
          "farmBeatsAuthMapping": "x-ms-farmBeats-data-provider-id",
          "name": "app_id",
          "isRequired": "true",
          "providerDataType": "string",
          "description": "Provide the APP ID, username etc. that your API supports",
          "location": "apiQuery"
        },
        {
          "farmBeatsAuthMapping": "x-ms-farmBeats-data-provider-key",
          "name": "app_key",
          "isRequired": "true",
          "providerDataType": "string",
          "description": "Provide the API Key or password etc. that your API supports",
          "location": "apiQuery"
        }
      ]
]
Kimlik doğrulama parametreleri ayrıntıları
Adı Tür Açıklama
authInputParameters dizi Kimlik doğrulama parametrelerinin JSON dizisidir ve burada her nesne desteklenen bir kimlik doğrulama türünü belirtir. Uzantınız tarafından desteklenen kimlik doğrulama türüne göre anahtarı kullanın.
farmBeatsAuthMapping Dize Şu anda kimlik doğrulamasıyla ilgili iki tür anahtar desteklenmektedir. API Anahtarı tabanlı kimlik doğrulaması için yalnızca x-ms-farmBeats-data-provider-key nesnesini, APP ID ve APP Key tabanlı kimlik doğrulaması için ise her iki nesneyix-ms-farmBeats-data-provider-key de x-ms-farmBeats-data-provider-id kullanın.
Adı Dize tarafından desteklenen kimlik doğrulama anahtarının apiNameadı.
ısrequired boolean Bu ad apiName için gerekli bir parametre mi? True veya false değerleri sağlayın.
providerDataType Dize parametresinin name veri türünü belirtin.
açıklama Dize Her nesne içinde her birinin farmBeatsAuthMapping ne anlama geldiğinin Tarım için Veri Yöneticisi açıklaması.
konum Dize API'nin neresinde parametresinin name gönderilmesi gerekir. Şu anda desteklenen değerler : apiQuery & apiHeader.

API giriş parametreleri

Bu bölüm, başarıyla çağrısı apiNameyapmak için API imzası (giriş parametreleri) hakkındaki ayrıntıları sağlar.

Örnek API giriş parametreleri
"apiInfos": [
    "apiInputParameters": [
        {
          "name": "start",
          "isRequired": "true",
          "providerDataType": "double",
          "description": "Start of time range. Valid start values range from zero to nine. Day zero represents the current day.",
          "location": "apiQuery"
        },
        {
          "name": "end",
          "isRequired": "true",
          "providerDataType": "double",
          "description": "End of time range. Valid end values range from zero to nine.",
          "location": "apiQuery"
        },
        {
          "name": "location",
          "isRequired": "true",
          "providerDataType": "string",
          "description": "User-provided latitude and longitude coordinates. Formatted as location=[(<lat_1>,<lon_1>)].",
          "location": "apiQuery"
        },
        {
          "name": "unitcode",
          "isRequired": "false",
          "providerDataType": "string",
          "description": "Unit conversion set to be used. Default is us-std. Valid values are us-std, si-std.",
          "location": "apiQuery"
        },
      ]
]
API giriş parametreleri ayrıntıları
Adı Tür Açıklama
apiInputParameters dizi HER nesnenin tarafından desteklenen bir giriş parametresini gösterdiği API giriş parametrelerinin apiNameJSON dizisi.
Adı Dize tarafından desteklenen giriş parametresinin apiNameadı.
ısrequired boolean Bu ad apiName için gerekli bir parametre mi? True veya false değerleri sağlayın.
providerDataType Dize parametresinin name veri türünü belirtin.
açıklama Dize Parametrenin ne name anlama geldiğinin açıklamasını sağlayın.
konum Dize API'nin neresinde parametresinin name gönderilmesi gerekir. Şu anda desteklenen değerler : apiQuery & apiHeader.

Ayıklanan API giriş parametreleri

Bu bölüm, Data Manager'ın hesaplama ve depolama için API isteğinde geçirilen giriş parametrelerini ayıklamasına yöneliktir. Bu örnekte, Tarım için Veri Yöneticisi API Giriş isteğinden konum bilgilerini (enlem ve boylam) ayıklayıp her hava durumu çıkışının bir parçası olarak Tarım için Data Manager'da depolayabilir.

Bu nedenle uzantının konum bilgilerini ayıklama hakkında bir HandleBars şablonu sağlaması gerekir. Aşağıdaki örnekte, uzantı API'sinin ve "lon" için "latitude" "longitude"olarak "lat" konum bilgilerini topladığı öne sürülmektedir.

Örnek ayıklanan API giriş parametreleri
"extractedApiInputParameters": [
        {
          "name": "location",
          "template": "{ \"latitude\": \"{{lat}}\", \"longitude\": \"{{lon}}\"  } "
        }
      ]
Ayıklanan API giriş parametreleri ayrıntıları
Adı Tür Açıklama
extractedApiInputParameters dizi Her nesnenin hangi bilgilerin ayıklanması gerektiğini gösterdiği JSON ayıklama işlevleri dizisi. Şu anda location böyle bir ayıklamadır.
Adı Dize Ayıklamanın adı, şu anda desteklenen değerdir location .
şablonu Dize API giriş parametrelerinde toplanan enlem ve boylam bilgilerinin nasıl toplandığını gösteren HandleBars şablonu.

İşlevsel parametreler

Bu bölüm, Tarım için Data Manager tarafından oluşturulan işlevler/yetenekler için ayrılmıştır. Hava durumu uzantısı için centroid hesaplaması bu tür işlevlerden biridir.

Kullanıcılar enlem/boylam koordinatlarını sağlamadığında, Tarım için Data Manager, merkezi hesaplamak için alanın birincil geometrisini (kullanıcı tarafından geçirilen kimlik) kullanır. Hesaplanan centroid koordinatları uzantıya (veri sağlayıcısı) enlem ve boylam olarak geçirilir. Bu nedenle, Tarım için Veri Yöneticisi'nin konum koordinatlarının kullanımını anlayabilebilmesi için işlevsel parametreler bölümü kullanılır.

Tarım için Data Manager'ın giriş parametrelerinde apiName enlem ve boylam kullanımını anlaması için uzantının konum bilgilerini toplamak için kullanılan anahtarı sağlaması ve ardından enlem ve boylam değerlerinin nasıl geçirilmesi gerektiğini belirten bir tutamaç şablonu sağlaması name beklenir.

Örnek işlevsel parametreler
"apiInfos": [
    "functionalParameters": [
        {
          "name": "CentroidCalculation",
          "description": "Provide names of the parameters used to collect latitude and longitude information",
          "functionalParameterEntities": [
            {
              "name": "lat",
              "template": "{ \"lat\": \"{{latitude}}\" } "
            },
            {
              "name": "lon",
              "template": "{ \"lon\": \"{{longitude}}\" } "
            }
          ]
        }
      ],
]
İşlevsel parametre ayrıntıları
Adı Tür Açıklama
functionalParameters dizi Her nesnenin Tarım için Data Manager tarafından desteklenen bir işlevselliği gösterdiği JSON işlev dizisi. Şu anda CentroidCalculation bu tür işlevlerden biridir.
Adı Dize İşlevin adıdır ve şu anda desteklenen değerdir CentroidCalculation .
açıklama Dize İşlevlerin Tarım için Data Manager açıklaması.
functionalParameterEntities dizi Her nesnenin enlem ve boylama özgü olduğu nesne JSON dizisi.

Birim sistemi

Bu bölüm, Data Manager for Agriculture tarafından uzantı tarafından desteklenen çeşitli birim sistemi türlerini anlamak için kullanılır. Bu nedenle uzantının API girişlerinde birim bilgilerini toplamak için kullanılan adı ve ardından tarafından apiNamedesteklenen çeşitli birim sistem adlarını (Örn: us-std) sağlaması key gerekir.

Örnek birim sistemi
"unitSystems": 
    {
        "key": "unitcode",
        "values": [
            "us-std",
            "si-std",
            "us-std-precise",
            "si-std-precise"
            ]
    }
Birim sistemi ayrıntıları
Adı Tür Açıklama
unitSystems nesne Birim sistem bilgilerini toplamak için JSON nesnesi.
anahtar Dize API girişindeki birim bilgilerini toplamak için kullanılan parametrenin adı.
Değer Dize Uzantı tarafından desteklenen birim sistem adlarının listesi.

Platform ve özel parametreler

Her hava durumu API'si yanıtında, çıkışın bir parçası olarak gönderilen hava durumu ölçüleri (örn. sıcaklık, çiy noktası vb.) parametre olarak adlandırılır.

Bu nedenle, parametreler söz konusu olduğunda, Tarım için Data Manager aşağıdaki parametre kümesini dahili olarak destekler ve bunları olarak Platform parametersele alır.

  • cloudCover
  • tarih saat
  • çiyPoint
  • growingDegreeDay
  • Yağış
  • basınç
  • relativeHumidity
  • soilMoisture
  • soilTemperature
  • sıcaklık
  • görünürlük
  • wetBulbTemperature
  • windChill
  • windDirection
  • windGust
  • windSpeed

Bu nedenle, platform parametrelerinin altına düşmeyen hava durumu parametrelerini gönderen tüm uzantılar bunları öğesinin Custom parametersbir parçası olarak gönderir. Platform ve müşteri parametreleri arasındaki temel fark, Tarım için Data Manager hava durumu API'lerini kullanan kullanıcıların özel parametrelerde değil platform parametrelerini (Örn: sıcaklık > 30) sorgulayabilmesi ve filtreleyebilmesidir. Ancak, özel parametreler hava durumu sorgu çıkışının bir parçası olarak gönderilir.

Bu bölümde uzantı, desteklenen her birim sistemi için parametrelerin her biri için birim bilgilerini sağlar. Bu Tarım için Veri Yöneticisi'nin kullanılması, uzantının bu bölümünde sağlanan bilgilere dayanarak her hava durumu parametresi için temel alınan ölçü biriminin ne olduğunu bilir.

Not

  • Belirli bir parametre için birimler uygulanamazsa tek başına olanlar için birimlerden bahsetmeyin (Örn: weatherDescriptor)
  • Belirli bir parametre için, birimler tüm birim sistemi için aynıysa, tüm birim sisteminde aynından bahsedin. (Örn: cloudCover)
Örnek platform ve özel parametreler
"apiInfos": [
     "platformParameters": [
        {
          "farmBeatsName": "cloudCover",
          "farmBeatsDataType": "double",
          "description": "The average percentage of sky covered by clouds.",
          "measurementUnits": [
            {
              "unitSystem": "us-std",
              "unit": "%"
            },
            {
              "unitSystem": "us-std-precise",
              "unit": "%"
            },
            {
              "unitSystem": "si-std",
              "unit": "%"
            },
            {
              "unitSystem": "si-std-precise",
              "unit": "%"
            }
          ]
        },
        {
          "farmBeatsName": "dewPoint",
          "farmBeatsDataType": "double",
          "description": "The air temperature at which the air will become saturated, and dew moisture will condense into fog (or dew).",
          "measurementUnits": [
            {
              "unitSystem": "us-std",
              "unit": "F"
            },
            {
              "unitSystem": "us-std-precise",
              "unit": "F"
            },
            {
              "unitSystem": "si-std",
              "unit": "C"
            },
            {
              "unitSystem": "si-std-precise",
              "unit": "C"
            }
          ]
        },
    "customParameters": [
        {
          "providerName": "weatherDescriptor",
          "providerDataType": "string",
          "description": "General weather descriptor data"
        },
        {
          "providerName": "airTempMax",
          "providerDataType": "double",
          "description": "Maximum daily air temperature at two meters above ground level.",
          "measurementUnits": [
            {
              "unitSystem": "us-std",
              "unit": "F"
            },
            {
              "unitSystem": "us-std-precise",
              "unit": "F"
            },
            {
              "unitSystem": "si-std",
              "unit": "C"
            },
            {
              "unitSystem": "si-std-precise",
              "unit": "C"
            }
          ]
        },
]
Platform parametreleri ayrıntıları
Adı Tür Açıklama
platformParameters dizi Her nesnenin bir platform parametresi olduğu platform parametrelerinin JSON dizisi.
farmBeatsName Dize Tarım için Veri Yöneticisi tarafından sağlanan parametrenin adı.
farmBeatsDataType Dize Tarım için Veri Yöneticisi tarafından sağlanan parametrenin veri türü.
açıklama Dize Tarım için Veri Yöneticisi tarafından sağlanan parametrenin açıklaması.
measurementUnits Dize Uzantı tarafından desteklenen birim sisteminin values her biri için JSON birim dizisi.
unitSystem Dize Uzantı tarafından desteklenen birim sistemi value .
unit Dize ÇiyPoint için özel hava durumu parametresi için ölçü birimi Ex: F .
Özel parametre ayrıntıları
Adı Tür Açıklama
customParameters nesne Her nesnenin bir özel parametre olduğu özel parametrelerin JSON dizisi.
providerName Dize Uzantı tarafından sağlanan parametrenin adı.
providerDataType Dize Uzantı tarafından sağlanan parametrenin veri türü.
açıklama Dize Uzantı tarafından sağlanan parametrenin açıklaması.
measurementUnits Dize Uzantı tarafından desteklenen birim sisteminin values her biri için JSON birim dizisi.
unitSystem Dize Uzantı tarafından desteklenen birim sistemi value .
unit Dize AirTempMax için özel hava durumu parametresi ex: F için ölçü birimi.

Platform ve özel şablon

Şablon, uzantı API'sinin çıkışını (JSON yanıtı) Tarım için Data Manager'ın beklediği biçime dönüştürmek için uzantı tarafından sağlanan eşleme bilgileridir. Bu farklı API çıkış biçimlerinin kullanılması artık tek bir biçime eşlenebilir/dönüştürülebilir.

Şablon çözümü, uzantı tarafından sağlanan JSON çıkışını ayrıştırmanın en etkili yollarından biri olarak bulunur. Hava durumu uzantısı söz konusu olduğunda, Tarım için Data Manager uzantının HandleBars şablonu kullanılarak yazılmasını bekler. HandleBars, kullanımı basit ifadeleri olan açık kaynak bir şablon oluşturma dilidir.

Not

Sağlanan örneklerle HandleBars şablonunu denemeniz ve Tarım için Data Manager tarafından sağlanmamışsa kendi ayrıştırma mantığınızı oluşturmak için yardımcı işlevlerden nasıl yararlanacağınızı öğrenmeniz kesinlikle önerilir.

Üst düzey bir şablonda, API yanıtını girdi olarak alıp Tarım için Data Manager tarafından beklenen biçimde çıktı oluşturularak şablonlar bu şekilde çalışır.

Şablon akışının Ekran Görüntüsü.

Yukarıdaki şekilde gösterildiği gibi, şablonunuzu ilgili API yanıtına göre doğrulayın ve uzantıda doğrulanmış şablonu kullanın. Aşağıda bir API yanıtının ve ilgili platformunun ve özel şablonunun bir örneği verilmiştir.

Örnek API yanıtı
{
    "47,-97": {
        "2016-12-15": {
            "overall": {
                "air_temp_avg": {
                    "unit": "F",
                    "value": -3.0
                },
                "air_temp_max": {
                    "unit": "F",
                    "value": 5.0
                },
                "air_temp_min": {
                    "unit": "F",
                    "value": -11.0
                },
                "cloud_cover_avg": {
                    "unit": "%",
                    "value": 26.4
                },
                "descriptors": {
                    "cloud_cover_descriptor": {
                        "code": 21107,
                        "icon": "https://.../cover_partlycloudyday.png",
                        "text": "Increasing Clouds"
                    },
                    "precipitation_descriptor": {
                        "code": 61113,
                        "icon": "https://.../precip_flurries.png",
                        "text": "Slight Chance of Flurries"
                    },
                    "weather_descriptor": {
                        "code": 61113,
                        "icon": "https://.../precip_flurries.png",
                        "text": "Slight Chance of Flurries"
                    },
                    "wind_direction_descriptor": {
                        "code": 51600,
                        "icon": "https://.../direction_sw.png",
                        "text": "Southwest"
                    },
                    "wind_trend_descriptor": {
                        "code": 10500,
                        "icon": "https://.../error_none.png",
                        "text": "None"
                    }
                },
                "dew_point_avg": {
                    "unit": "F",
                    "value": -11.0
                },
                "dew_point_max": {
                    "unit": "F",
                    "value": -4.0
                },
                "dew_point_min": {
                    "unit": "F",
                    "value": -19.0
                },
                "ice_acc_period": {
                    "unit": "in",
                    "value": 0.0
                },
                "liquid_acc_period": {
                    "unit": "in",
                    "value": 0.0
                },
                "long_wave_radiation_avg": {
                    "unit": "W/m^2",
                    "value": 170.0
                },
                "pet_period": {
                    "unit": "in",
                    "value": 0.009
                },
                "precip_acc_period": {
                    "unit": "in",
                    "value": 0.001
                },
                "precip_prob": {
                    "unit": "%",
                    "value": 10.0
                },
                "relative_humidity_avg": {
                    "unit": "%",
                    "value": 68.0
                },
                "relative_humidity_max": {
                    "unit": "%",
                    "value": 77.0
                },
                "relative_humidity_min": {
                    "unit": "%",
                    "value": 61.0
                },
                "short_wave_radiation_avg": {
                    "unit": "W/m^2",
                    "value": 70.0
                },
                "snow_acc_period": {
                    "unit": "in",
                    "value": 0.02
                },
                "sunshine_duration": {
                    "unit": "hours",
                    "value": 6
                },
                "wind_gust_max": {
                    "unit": "n/a",
                    "value": "n/a"
                },
                "wind_speed_2m_avg": {
                    "unit": "mph",
                    "value": 6.0
                },
                "wind_speed_2m_max": {
                    "unit": "mph",
                    "value": 8.0
                },
                "wind_speed_2m_min": {
                    "unit": "mph",
                    "value": 2.0
                },
                "wind_speed_avg": {
                    "unit": "mph",
                    "value": 8.0
                },
                "wind_speed_max": {
                    "unit": "mph",
                    "value": 11.0
                },
                "wind_speed_min": {
                    "unit": "mph",
                    "value": 3.0
                }
            }
        }
    }
}
Yukarıdaki API yanıtı için Örnek Platform & Özel şablon
{
"apiInfos": {
    "platformTemplate": "{ {{#each .}}\"value\": [{{#each .}} {\"cloudCover\": \"{{overall.cloud_cover_avg.value}}\" ,\"dewPoint\": \"{{overall.dew_point_avg.value}}\" ,\"precipitation\": \"{{overall.precip_acc_period.value}}\" ,\"relativeHumidity\": \"{{overall.relative_humidity_avg.value}}\" ,\"dateTime\": \"{{convertDateInYYYYMMDDToDateTime @key}}\",      \"temperature\": \"{{overall.air_temp_avg.value}}\" ,\"windSpeed\": \"{{overall.wind_speed_avg.value}}\" ,   },{{/each}}]{{/each}} }",
    "customTemplate": "{ {{#each .}}\"value\": [{{#each .}} {\"air_temp_max\": \"{{overall.air_temp_max.value}}\",\"air_temp_min\": \"{{overall.air_temp_min.value}}\",\"cloudCoverDescriptor\": \"{{overall.descriptors.cloud_cover_descriptor.text}}\",\"precipitationDescriptor\": \"{{overall.descriptors.precipitation_descriptor.text}}\",\"weatherDescriptor\": \"{{overall.descriptors.weather_descriptor.text}}\",\"windDirectionDescriptor\": \"{{overall.descriptors.wind_direction_descriptor.text}}\",\"windTrendDescriptor\": \"{{overall.descriptors.wind_trend_descriptor.text}}\",\"dewPointMax\": \"{{overall.dew_point_max.value}}\",\"dewPointMin\": \"{{overall.dew_point_min.value}}\",\"iceAccPeriod\": \"{{overall.ice_acc_period.value}}\",\"liquidAccPeriod\": \"{{overall.liquid_acc_period.value}}\",\"longWaveRadiationAvg\": \"{{overall.long_wave_radiation_avg.value}}\",\"petPeriod\": \"{{overall.pet_period.value}}\",\"precipProb\": \"{{overall.precip_prob.value}}\",\"relativeHumidityMax\": \"{{overall.relative_humidity_max.value}}\",\"relativeHumidityMin\": \"{{overall.relative_humidity_min.value}}\",\"shortWaveRadiationAvg\": \"{{overall.short_wave_radiation_avg.value}}\",\"snowAccPeriod\": \"{{overall.snow_acc_period.value}}\",\"sunshineDuration\": \"{{overall.sunshine_duration.value}}\",\"windSpeed2mAvg\": \"{{overall.wind_speed_2m_avg.value}}\",\"windSpeed2mMax\": \"{{overall.wind_speed_2m_max.value}}\",\"windSpeed2mMin\": \"{{overall.wind_speed_2m_min.value}}\",\"windSpeedMax\": \"{{overall.wind_speed_max.value}}\",\"windSpeedMin\": \"{{overall.wind_speed_min.value}}\",},{{/each}}]{{/each}} }"
}
}

Not

HandleBars'tan oluşturulan şablon, JSON biçimiyle uyumlu hale getirmek için eklenerek \"<text>\" dizelendirilir.

Yardımcı işlevler

Yardımcı işlevler, şablonlar tarafından veriler üzerinde yerel olarak desteklenmeyen belirli bir dönüştürme gerçekleştirmek için kullanılır. Aşağıda, Tarım için Veri Yöneticisi tarafından desteklenen yardımcı işlevler yer alır.

Örnek yardımcı işlevler
Handlebars.registerHelper('splitAndTake', function(title, char, index) {
  var t = title.split(char);
  return t[index];
});
Handlebars.registerHelper('converttime', function(timestamp) {
    return new Date(timestamp);
});
Handlebars.registerHelper('convertunixtime', function(unix_timestamp) {
    return new Date(unix_timestamp * 1000);
});

Bu yardımcı işlevler hangi eylemi yapar?

  • SplitAndTake(nesne değeriObject, dize ayırıcı, int dizini) - Bu işlev, bir ayırıcıya (Örn: "47,-97") göre bir dizeyi bölmek için kullanılır (Örn: ",") ve verilen dizindeki öğeyi alır (Örn: index=0 "47" verir)
  • ConvertDateInFormatToDateTime(object dateObject, dize biçimi) - Bu işlev verilen biçimdeki bir tarihi (Ör. 2016-12-15) DateTime dizesine ayrıştırmak için kullanılır.
  • ConvertUnixTimeToDateTime(object unixTimeStamp) - Bu işlev, unix zaman damgasını (Örn: 1392267600) tarih saat dizesine dönüştürmek için kullanılır.
  • GetObjectFromListWithKeyValuePair(Array listOfObjects, dize anahtarı, dize değeri) - Nesne listesi verilip nesnenin anahtar () değer (typeRAIN) çiftini temel alarak nesneyi getirmesi gerekir. Aşağıdaki örnekte, bu işlevin yağışını "type": "RAIN" seçmek için kullanılır.
{
"precipitation": [
      {
        "type": "SNOW",
        "amount": 0
      },
      {
        "type": "RAIN",
        "amount": 0.01
      }
    ]
}
  • GetValueFromObject(dize jsonString, dize anahtarı) - Dize olarak bir json nesnesi verüldüğünde, değeri anahtara göre alır.

Not

Yazmakta olduğunuz uzantı, API yanıtını ayrıştırmak için ek yardımcı işlevler gerektiriyorsa bir destek bileti oluşturarak bize ulaşın.