您想使用实时和历史世界天气数据信息来增强您的应用程序吗?拥有一个 API 来以轻量级 JSON 格式检索世界上任何位置的即时、准确的天气信息不是很好吗?更重要的是,您是否想用尽可能少的代码完成所有这些工作,同时又保持易于理解和完全可维护?关注所有这些以及更多!
在本文中,我们将看到使用 RAD Studio 和 Delphi 创建 Firemonkey 多设备应用程序是多么快速和容易,使用RAD Studio LowCode 向导以及 REST 客户端库来利用 WeatherStack API 并检索 JSON 格式的响应当前天气、历史天气、时间序列和预测 API 端点。
WeatherStack API 提供对全球数百万个位置的当前天气数据的即时访问,由坚如磐石的数据源提供支持并实时更新。这可以免费完成(每月最多前 250 次通话;无需信用卡),并且可以以非常实惠的价格提供更多服务,并且可以根据您的使用情况进行扩展,无需预先承诺。数据来自世界上一些最大的气象站和气象数据提供商,所有这些都受到全天候严密监控,以确保一致性和数据准确性。
我们的 RAD Studio 和 Delphi 应用程序将能够调用 API 并根据您提供的城市名称请求信息。
确保您参考 WeatherStack API 网站 ( https://weatherstack.com/ ) 并注册免费计划,仅提供您的电子邮件和一些基本信息(不需要信用卡)。进入网站后,会将您重定向到快速入门指南仪表板,并会提供您的 API 访问密钥。访问密钥是唯一的、个人的,需要通过 API 进行身份验证。保持安全!
现在我们需要做的就是通过 HTTP POST 方法调用 API 基本 URL(http://api.weatherstack.com/),不需要 JSON 请求正文,并且根据 ednpoint 将一些请求的参数添加到 URL 地址我们选择打电话。可以使用可用于多种编程语言的 REST 客户端库来做到这一点。
WeatherStack 提供了多个 API 端点可供选择:
我们的演示将专注于当前天气端点,但所有其他端点都遵循类似的逻辑,但传递的参数不同。有关端点及其参数的完整详细列表,请确保您参考 WeatherStack 快速入门指南 ( https://weatherstack.com/quickstart )
// Current Weather API Endpoint
http://api.weatherstack.com/current
? access_key = YOUR_ACCESS_KEY
& query = New York
// optional parameters:
& units = m
& language = en
& callback = MY_CALLBACK
通话结束后,主要结果将是一个非常完整的列表,其中包含您的应用程序向用户显示当前天气所需的各种信息,例如温度、风、压力、湿度、能见度,甚至是代表天气的图标的链接文本天气描述。
{"request":{
"type":"City",
"query":"New York, United States of America",
"language":"en","unit":"m"},
"location":{"name":"New York",
"country":"United States of America",
"region":"New York",
"lat":"40.714",
"lon":"-74.006",
"timezone_id":"America/New_York",
"localtime":"2021-07-14 17:04",
"localtime_epoch":1626282240,
"utc_offset":"-4.0"},
"current":{"observation_time":"09:04 PM",
"temperature":30,
"weather_code":116,
"weather_icons":["https://assets.weatherstack.com/images/wsymbols01_png_64/wsymbol_0002_sunny_intervals.png"],
"weather_descriptions":["Partly cloudy"],
"wind_speed":0,
"wind_degree":0,
"wind_dir":"N",
"pressure":1020,
"precip":0,
"humidity":59,
"cloudcover":50,
"feelslike":34,
"uv_index":7,
"visibility":16,
"is_day":"yes"}}
按照基本步骤设置 WeatherStack API 后,我们需要确保我们能够在开始编写一些代码之前与其进行连接和通信。
RAD Studio Delphi 和 C++Builder 使连接到 API 变得非常容易,因为您可以使用 REST 调试器自动创建 REST 组件并将它们粘贴到您的应用程序中。
在 Delphi 中,体现了真正的低代码开发工具的威力!所有工作都是使用 3 个组件完成的,以进行 API 调用。它们是 TRESTClient、TRESTRequest 和 TRESTResponse。成功连接 REST 调试器后,复制并粘贴组件,您会注意到 API URL 设置在 TRESTClient 的 BaseURL 上。在 TRESTRequest 组件上,您将看到请求类型设置为 rmPOST,ContentType 设置为 ctAPPLICATION_JSON,并且它包含一个用于 POST 的请求正文。
运行您的 RAD Studio Delphi 并在主菜单上单击 Tools > REST Debbuger。如下配置 REST 调试器,将内容类型标记为 application/json,并添加 POST url、JSON 请求正文和您创建的 API 密钥。单击“发送请求”按钮后,您应该会看到 JSON 响应,如下所示。在下图中,我使用从 WeatherStack API 仪表板复制的访问密钥作为参数,并查询我所在城市 Salvador-Bahia-Brasil 的当前天气。
低代码应用程序开发在今天越来越流行,这是有充分理由的:它说明了对软件的需求以及创建它的难度。在许多方面,Delphi 引领了低代码革命:RAD(快速可视化开发),您通过在可视化设计器中连接组件来构建软件,是低代码。许多低代码解决方案的关键是可扩展性:无法扩展到传统编码应用程序的低代码具有严格的功能上限。如果您是技术顾问,您不想推荐会限制您的客户或公司的内容。针对低代码的最佳开发解决方案提供了增长和扩展的途径。在这方面,Delphi 也很出色。
直到最近在 Delphi 中,您仍然必须创建一个新项目并自己创建表单或屏幕——无论您需要编写多少代码才能获得强大的功能。这是我们现在通过 10.4.2 的插件解决的问题。运行您的 RAD Studio Delphi,然后在主菜单上单击 Tools > GetIt Package Manager。在 GetIt for 10.4.2 及更高版本中搜索“Low Code App Wizard for FireMonkey”,这是我们用于跨平台应用程序的技术。您还可以通过此链接直接找到低代码应用程序向导:https : //getitnow.embarcadero.com/firemonkey-app-low-code-wizard/
现在您已经为 FireMonkey 安装了 Low Code App Wizard,并且您能够在 REST Debbuger 上成功配置和测试您的 API 调用,返回到 REST Debbuger 并单击 Copy Components 按钮。打开 RAD Studio Delphi 并在主菜单上单击文件 > 新建 > 多设备应用程序 Delphi,选择如下所示的 Firemonkey 模板应用程序,然后按照一些简单的向导步骤来创建您的低代码应用程序。
结果将是一个 功能齐全的跨平台应用程序,它已经包含了每个移动应用程序都需要的基本功能——你可以按原样运行和使用应用程序——以及构建更多的钩子,加上用非常干净的方式演示应用程序开发最佳实践可扩展设计,以低代码添加更多屏幕,以及一组测试,以确保您的应用在自定义时保持高质量。
您可以选择以下任何一组:
正如您所看到的,向导为您节省了大量时间,因为它创建了一个完整的项目,其中包含许多可供您实施代码的表单。打开最近创建的 NewFormFrame 并按 Ctrl+V 以粘贴您从 REST Debbuger 复制的组件。此操作将导致将三个组件添加到表单 RESTClient1、RESTRequest1 和 RESTResponse1 中。
现在我们将简单地向 TButton OnClick 事件添加非常简单的代码,以确保每件事都配置正确,瞧!在五分钟内,我们第一次调用 WeatherStack API,我们能够接收我们想要的任何城市的 JSON 响应。
procedure TNewFormFrame.Button1Click(Sender: TObject);
begin
inherited;
memo1.Lines.text := '';
RESTClient1.ResetToDefaults;
RESTClient1.Accept := 'application/json, text/plain; q=0.9, text/html;q=0.8,';
RESTClient1.AcceptCharset := 'UTF-8, *;q=0.8';
RESTClient1.BaseURL := 'http://api.weatherstack.com/current';
RESTClient1.HandleRedirects := True;
RESTClient1.RaiseExceptionOn500 := False;
//here is were we pass the access_key and city as parameters
RESTRequest1.Resource := Format('?access_key=%s&query=%s', [edit1.Text, edit2.Text]);
RESTRequest1.Client := RESTClient1;
RESTRequest1.Response := RESTResponse1;
RESTRequest1.SynchronizedEvents := False;
RESTResponse1.ContentType := 'application/json';
RESTRequest1.Execute;
memo1.Lines.text := RESTResponse1.Content;
end;
示例应用程序具有一个 TEdit 作为粘贴访问密钥的位置和另一个用于 City 参数的 TEdit,一个 TMemo 用于显示 REST API 调用的 JSON 结果。现在您拥有了与响应数据交互所需的一切,并使您的应用程序处理信息并以更适合您需求的方式直观地呈现它!在下图中,我使用了从 WeatherStack API 仪表板复制的访问密钥作为参数,并查询了我所在城市 Salvador-Bahia-Brasil 的当前天气,我们的应用程序中的结果与我们在 REST Debugger 中获得的结果相同。
在这篇博文中,我们看到了如何注册 WeatherStack API 以便即时访问当前的天气数据。我们已经了解了如何使用 RAD Studio REST Debugger 连接到端点并将该代码复制到实际应用程序中。最后,我们已经看到使用 RAD Studio Delphi 和用于 FireMonkey 的低代码应用程序向导创建一个真正的多设备(Windows/MacOS 桌面或 Android/iOS 移动)颈椎枕应用程序是多么容易和快速,该应用程序连接到 API 并检索数据准备好供您迭代!
前往并从此处下载此演示应用程序的完整源代码:https : //github.com/checkdigits/WeatherApp_WeatherStackAPI
RAD Studio Delphi 允许您轻松快速地构建应用程序,这些应用程序连接到功能强大的 SDK 和 API,只需很少或无需代码。为什么不今天下载试用版?