
News API + React:創建一個卓越的實時新聞應用程序
在為應用程序選擇天氣應用程序 API 時,需要考慮一些事項:
在浩瀚的天氣應用程序 API 海洋中,APILayer 的 WeatherStack 是用戶最可靠和最值得信賴的解決方案。WeatherStack API 是市場領先的天氣休息 API 服務之一,適用于任何應用程序。它具有實時功能和歷史天氣信息,并支持所有主要編程語言。您可以立即檢索任何位置的準確天氣信息。
是的,我們一直在探索和學習 WeatherStack API。 此外,與市場上其他類似的 Web 服務相比,它具有靈活性。
Weatherstack API 提供了廣泛的功能集,可滿足企業和開發人員的各種要求。讓我們來看看使 Weatherstack API 成為獲取氣象信息的推薦選項的主要特征。
由于其核心數據源集,Weatherstack API 保證了其天氣數據的最高程度的準確性、一致性和可靠性。用戶可以放心地做出明智的判斷,因為他們可以信賴所提供信息的準確性。
Weatherstack API 以閃電般的響應時間提供天氣數據。通過使用輕量級 JSON 格式,數據傳輸針對跨多種編程語言的速度和兼容性進行了優化,從而保證快速集成到任何項目中。
Weatherstack API 每天可以處理數十億個請求,因為它由 Apilayer 精心設計和維護的可擴展云架構提供支持。無論您是經營企業級公司還是小型開發人員,Weatherstack API 都可以根據您的需求進行擴展,而不會犧牲速度。
Weatherstack API 擁有數百萬個位置供您使用,提供無與倫比的位置查找靈活性。用戶可以通過多種方式輕松獲取所需位置的氣象數據,包括郵政編碼、城市或地區名稱、IP地址以及經緯度坐標。此功能支持多種用例。
Weatherstack API 通過使用行業標準的 256 位 HTTPS (SSL) 加密來優先考慮數據傳輸的安全性。安全性非常重要。通過屏蔽所有往返API的數據流,可確保敏感數據的完整性和機密性。
完美集成的基礎是廣泛的 API 文檔。憑借其全面的文檔和多種語言的交互式代碼示例,Weatherstack API 使開發人員能夠輕松利用其所有功能。
天氣數據可訪問性的基準是 Weatherstack API。憑借其對安全性、可擴展性、可靠性、速度和用戶友好型文檔的堅定承諾,Weatherstack API 將徹底改變企業和開發人員在其應用程序和服務中使用天氣數據的方式。
開始使用 WeatherStack API 很簡單!只需前往 WeatherStack 官方網頁并注冊免費訂閱計劃,然后從儀表板獲取您的 API 訪問密鑰。
下面是一個示例 API 請求:
http://api.weatherstack.com/current? access_key = YOUR_ACCESS_KEY& query = New York
使用 Delphi FireMonkey,您可以立即從單個代碼庫創建本機和跨平臺應用程序!
FireMonkey 跨平臺框架允許您以 5 倍的生產力構建原生應用程序。您可以使用數百個組件和庫快速設計和創建功能完備的應用程序。
此外,使用新的 FireMonkey 應用程序低代碼向導,您可以通過選擇向導中的可用選項來構建和生成跨平臺項目。
FireMonkey App Low Code Wizard 可以創建多個屏幕并演示編碼最佳實踐。此外,如果您需要定制,您可以使用 Delphi 輕松編碼!
在這里,您可以通過免費的 Bootcamp 課程開始學習 Delphi FireMonkey,該課程涵蓋了開始使用 Delphi FireMonkey 開發跨平臺應用程序所需的大部分基本內容!
在本演示中,我將創建此應用程序,并向您展示如何與 WeatherStack API 集成。
REST Debugger 是一個強大的環境,可用于使用 RESTful Web 服務。您可以從 IDE 的 “Tools”(工具)菜單中啟動 REST Debugger。
以下是我們建立連接的方法:
成功連接到 RESTful Web 服務后,我們只需單擊 Copy components 按鈕即可復制已配置的 REST 客戶端組件,并將其粘貼到我們的項目中。
以下是我們的應用程序用戶界面結構:
用戶界面響應迅速且靈活。我嘗試在 UI 設計中利用最佳實踐。
現在,您需要從 REST Debugger 粘貼復制的組件,并在 Search 按鈕上創建一個 OnClick 事件。
并將此代碼粘貼到 OnClick 事件中。
procedure TFormMain.BtnRequestClick(Sender: TObject);begin MultiView1.HideMaster; RESTClient1.ResetToDefaults; RESTClient1.Accept := 'application/json'; RESTClient1.AcceptCharset := 'UTF-8, *;q=0.8'; RESTClient1.BaseURL := 'http://api.weatherstack.com/current'; // give city name in the URL query RESTRequest1.Resource := Format('?access_key=1ec3dade5a2d89dc10a6aecd5b84d0b5&query=%s', [EdtCityName.Text]); RESTResponse1.ContentType := 'application/json'; // request RESTRequest1.Execute; // parse json and open the current object var JSONObject := TJSONObject.ParseJSONValue(RESTResponse1.Content) as TJSONObject; var JSONValue := JSONObject.Get('current').JSONValue; try LblTemp.Text := JSONValue.GetValue<String>('temperature') + 'o'; LblCity.Text := EdtCityName.Text; // get the first element from the weather description array var JSONArray := JSONValue.GetValue<TJSONArray>('weather_descriptions'); LblType.Text := JSONArray.Items[0].Value; // download weather icon and set to TImage component var MemoryStream := TMemoryStream.Create; var HttpClient := TNetHTTPClient.Create(nil); var HTTPReq := TNetHTTPRequest.Create(nil); HTTPReq.Client := HttpClient; try // get weather icon URL from weather_icons array JSONArray := JSONValue.GetValue<TJSONArray>('weather_icons'); var ImgURL := JSONArray.Items[0]; // download image HTTPReq.Get(ImgURL.Value, MemoryStream); MemoryStream.Seek(0, soFromBeginning); // load streamed data to TImage ImgWeatherIcon.Bitmap.LoadFromStream(MemoryStream); finally FreeAndNil(MemoryStream); FreeAndNil(HttpClient); FreeAndNil(HTTPReq); end; // little more details on the weather LstBoxItemHumidity.Text := 'Humidity: ' + JSONValue.GetValue<String>('humidity'); LstBoxItemFeelsLike.Text := 'Feels like: ' + JSONValue.GetValue<String>('feelslike') + 'o'; LstBoxItemCloudCover.Text := 'Cloud cover: ' + JSONValue.GetValue<String>('cloudcover'); LstBoxItemIsDay.Text := 'Is day: ' + JSONValue.GetValue<String>('is_day'); finally JSONValue.Free; end;end;
如您所見,我們正在根據用戶的輸入重新配置請求 URL。
然后,我們解析 JSON 并打開當前對象。當前對象具有主要的天氣數據,例如:溫度、濕度、天氣圖標等。
之后,我們從 weather description 數組中獲取第一個元素,其中包含天氣信息的摘要。
var JSONValue = JSONObject.Get('current').JSONValue;tryLblTemp.Text = JSONValue.GetValue('temperature') + '0'; Lblcity.Text = EdtCityName.Text;// get the first element from weather description arrayvarJSONArray = JSONValue.GetValue ('weather_descriptions'); LblType.Text := JSONArray.Items[0].Value;
然后我們解析天氣圖標并下載圖像并將其設置為 TImage 組件。
// download weather icon and set to TImage component var MemoryStream := TMemoryStream.Create;var HttpClient = TNetHTTPClient.Create (nil); var HTTPReq = TNetHTTPRequest.Create (nil); HTTPReq.Client := HttpClient;try// get weather icon URL from weather_icons array JSONArray = JSONValue.GetValue('weather_icons'); var ImgURL := JSONArray.Items[0];// download imageHTTPReq.Get (ImgURL. Value, MemoryStream); MemoryStream.Seek (0, soFromBeginning);// load streamed data to TImageImgWeatherIcon.Bitmap.LoadFromStream (MemoryStream);finallyFreeAndNil (MemoryStream);FreeAndNil (HttpClient);FreeAndNil (HTTPReq);113end;
我希望這段代碼中的所有內容都清楚。我很確定你可以學到很多關于 Delphi 中的 JSON 操作和使用 Delphi FireMonkey 創建跨平臺應用程序的知識。
您準備好使用快速且經濟高效的 JSON API 來構建應用程序以滿足您的天氣數據要求了嗎?APILayer 應有盡有!
APILayer 站在 API 市場的最前沿,為廣泛的用例提供一流的 API。APILayer 上的 API 是完全安全的,并且比同類 API 更準確。所有這些 API 都提供免費計劃,因此您可以在花錢之前試用它們。無論您是想構建適用于 Windows 還是移動設備的天氣應用程序,請注冊 APILayer 并選擇高性能 API 以開始使用。
本文介紹了如何結合使用像WeatherStack這樣經濟實惠的JSON天氣應用API和Delphi FireMonkey無與倫比的功能,來創建符合不斷變化的軟件市場需求的創新型跨平臺應用程序。Apilayer 的天氣應用程序 API 為任何開始為 Windows 或 Android 開發強大且響應迅速的天氣應用程序的人提供了一個強大的平臺,無論經驗水平如何。
在所有主要編程語言中,WeatherStack API 是提供歷史和實時天氣數據的頂級天氣 REST API 服務。需要天氣數據集成的應用程序可能會選擇它,因為它可以快速為任何區域提供可靠的天氣信息。
WeatherStack API 易于使用和入門。您必須訪問官方網站,創建一個免費帳戶,并從儀表板獲取您的 API 訪問密鑰。當您收到天氣應用的 API 密鑰 API 密鑰時,您就可以開始為您的應用程序使用氣象數據。
Delphi FireMonkey 只需一個代碼庫,即可面向多個平臺,例如 Windows、macOS、Linux、iOS 和 Android。無需創建特定于平臺的應用程序,開發人員就可以利用這種適應性,將他們的天氣應用程序使用 API 提供給更廣泛的受眾。
與傳統的開發方法相比,Delphi FireMonkey 的生產力提高了五倍。開發人員可以使用其龐大的組件庫快速設計和創建功能齊全的應用程序,從而大大縮短上市時間。
原文來源:https://blog.apilayer.com/how-to-create-a-weather-app-for-windows-and-mobile-using-an-api/