4个版本
0.1.3 | 2023年9月26日 |
---|---|
0.1.2 | 2023年9月26日 |
0.1.1 | 2023年9月24日 |
0.1.0 | 2023年9月24日 |
#14 in #launch
31KB
565 行
Rocket Launch Live
围绕 RocketLaunch.Live API 的类型安全且异步的包装器。
rocket_launch_live
允许您轻松地将代码异步集成到 RocketLaunch.Live API。无需处理底层细节,用户可以使用高级接口实例化一个客户端,并使用有效的API密钥。
设计
RocketLaunchLive
是主要结构,包含每个端点的方法。JSON数据被反序列化为在 api_models
模块中定义的有意义的模型类型。对端点方法的每次调用都会返回一个 Response<T>
,它对 T 是通用的,允许定制响应。根据您调用的方法,响应包含类型为 Vec<T>
的结果字段,其中 T 可以是类型 api_models::Company
、api_models::Launch
、api_models::Location
、api_models::Mission
、api_models::Pad
、api_models::Tag
或 api_models::Vehicle
。
此REST API通过以下端点提供对不断增长的精选火箭发射数据的访问
- 公司
- 发射
- 位置
- 任务
- 垫片
- 标签
- 车辆
示例
use rocket_launch_live::api_models::{Launch, Response};
use rocket_launch_live::{Direction, LaunchParamsBuilder, NaiveDate, RocketLaunchLive};
use std::{env, error::Error};
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
// Read the API key from an environment variable.
let api_key = env::var("RLL_API_KEY")?;
// Create an instance of RocketLaunchLive to access the API.
let client = RocketLaunchLive::new(&api_key);
// Create an instance of LaunchParamsBuilder.
// Set some parameters to filter out the launches we're interested in.
let params = LaunchParamsBuilder::new()
.country_code("US")
.after_date(NaiveDate::from_ymd_opt(2023, 9, 1))?
.search("ISS")
.direction(Direction::Descending)
.limit(10)
.build();
// Call the launches endpoint method with the parameters set above.
// This returns a Response from the API server asynchronously.
// Generic type annotations since each endpoint has a specific response.
let resp: Response<Launch> = client.launches(Some(params)).await?;
// Iterate over the the result field of the Response.
for launch in resp.result {
println!(
"{} | {} | {}",
launch.date_str, launch.vehicle.name, launch.name
);
}
Ok(())
}
依赖项
~7-22MB
~300K SLoC