#open-weather #open-weather-map #api #org #found #api-key #async

openweather-async

一个用于 openweathermap.org API 的异步库

2 个版本

0.1.2 2020 年 8 月 13 日
0.1.1 2020 年 8 月 13 日
0.1.0 2020 年 8 月 11 日

#5 in #open-weather

MIT 许可证

14KB
292

openweather-async

这个 Rust 库用于访问 当前天气 部分 OpenWeather API。这不是官方库,它是根据在此处找到的同步版本创建的。

设置

要使用此库,您首先需要在 OpenWeather API 注册 并获取 API 密钥。如果您感兴趣,API 文档在此处,其中包含 json 格式响应的示例。

为了遵循下面的示例,您应该将 API 密钥存储在 .env 文件中,格式为 OPENWEATHER_API_KEY=YOUR_API_KEY。此 .env 文件应放置在您的项目根目录中。

├── Cargo.toml
├── .env
├── src
│   ├── main.rs

接下来,您需要将以下依赖项添加到您的 Cargo.toml 中。

openweather-async = "0.0.1"
tokio = { version="0.2.22", features = ["macros", "tcp", "dns", "io-util"]}
dotenv = "0.15.0"

示例程序

下面的程序将检索表示为 OpenWeather 类型的完整天气报告。此类型以及构成它的其他类型可以在 models.rs 文件中找到。如果您正在寻找特定字段,查看那里或文档将有所帮助。

虽然您可以直接将 API 密钥传递给 new,但建议您遵循以下示例,并使用上面提到的示例中显示的 dotenv crate。

use tokio;
use std::env;
use dotenv::dotenv;
use openweather_async::{ OpenWeather, Units};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    dotenv().expect("No env file found");
    let token = env::var("OPENWEATHER_API_KEY").unwrap();
    let weather: OpenWeather = OpenWeather::new(&token, Units::Metric).await?;
    let report = weather.get_by_city("Tokyo").await?;
    println!("{:?}", report);
    println!("{:?}", report.main);
    println!("{:?}", report.wind.speed);
   Ok(())
}

您可以通过六种不同的方式访问 API,最后两种还可以访问其他功能,如下所示。请注意,这些调用中的每一个都将是对 API 的新请求。如果您通过城市名称找到,您可以在返回的 OpenWeather 结构中找到国家代码。

weather.get_by_city_and_country("Tokyo", "Japan").await?;
weather.get_by_coordinates(56.0, 12.0).await?;
weather.get_by_zipcode(80918, "US").await?;
weather.get_by_cities_in_zone(12.0, 32.0, 15.0, 37.0, 10).await?;
weather.get_by_cities_in_cycle(12.0, 32.0, 3).await?;

依赖项

~7–11MB
~233K SLoC