1 个不稳定版本
0.1.1 | 2022年12月8日 |
---|---|
0.1.0 |
|
#11 in #fastly
9KB
101 行
Fastly Compute@Edge 合成内容教程的辅助工具
此 crate 导出可序列化/反序列化的 struct ForecastAPIResponse
结构体,用于 WeatherAPI 的 Forecast 端点响应。
以下数据结构支持在 合成内容教程 中使用 Fastly 的 Compute@Edge 创建天气小部件。
与 Response.take_body_json<T: DeserializeOwned>
一起使用
let url = format!(
"http://api.weatherapi.com/v1/forecast.json?q={},{}&key={}",
LATITUDE,
LONGITUDE,
MY_API_KEY
);
let mut resp = Request::new(Method::GET, url)
.with_pass(true)
.send(BACKEND_NAME)?;
// Parse the JSON response body into an ForecastAPIResponse
let api_response = resp.take_body_json::<ForecastAPIResponse>()?;
结果结构
ForecastAPIResponse {
on: LocationData {
date: DateElements {
weekday: "Wednesday",
weekday_short: "Wed",
pretty_date: " 7 December 2022",
},
},
current: CurrentWeatherData {
temp_c: 2.0,
temp_f: 35.6,
wind_mph: 6.9,
wind_kph: 11.2,
precip_mm: 0.0,
precip_in: 0.0,
humidity: 80.0,
condition: WeatherCondition {
description: "Clear",
icon: 1000,
},
},
forecast: ForecastData {
on: [
WeatherReport {
dt: DateElements {
weekday: "Wednesday",
weekday_short: "Wed",
pretty_date: " 7 December 2022",
},
day: DayWeatherData {
avgtemp_c: 3.5,
avgtemp_f: 38.3,
condition: WeatherCondition {
description: "Partly cloudy",
icon: 1003,
},
},
},
WeatherReport {
dt: DateElements {
weekday: "Thursday",
weekday_short: "Thu",
pretty_date: " 8 December 2022",
},
day: DayWeatherData {
avgtemp_c: 2.0,
avgtemp_f: 35.5,
condition: WeatherCondition {
description: "Sunny",
icon: 1000,
},
},
},
WeatherReport {
dt: DateElements {
weekday: "Friday",
weekday_short: "Fri",
pretty_date: " 9 December 2022",
},
day: DayWeatherData {
avgtemp_c: 1.3,
avgtemp_f: 34.4,
condition: WeatherCondition {
description: "Sunny",
icon: 1000,
},
},
},
],
},
}
依赖
~1.6–2.6MB
~51K SLoC