2 个版本
0.1.2 | 2020 年 8 月 13 日 |
---|---|
0.1.1 |
|
0.1.0 | 2020 年 8 月 11 日 |
#5 in #open-weather
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