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.0 baş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 requestType
temelinde 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ı apiName için API uç noktası. |
Requesttype | Dize | GET veya POST PUT tarafından apiName desteklenen istek türü. |
isLoadAPI | boolean | apiName geçerli hava durumu verileri gibi bir geçiş API'yse, bu anahtarı olarak false oluşturun. Tüm yük API'leri (geçmiş ve tahmin) için bu alanı olarak true tutun. isLoadAPI Anahtar olduğunda false API 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 apiName desteklenen varsayılan birim sisteminin adını belirtin. |
Kimlik doğrulama parametreleri
Bu bölüm, tarafından apiName
desteklenen 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 apiName adı. |
ı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ı apiName
yapmak 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 apiName JSON dizisi. |
Adı | Dize | tarafından desteklenen giriş parametresinin apiName adı. |
ı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 apiName
desteklenen ç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 parameters
ele 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 parameters
bir 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.
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 (
type
RAIN
) ç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.