weather data upload test
This commit is contained in:
115
src/main.rs
115
src/main.rs
@@ -1,4 +1,4 @@
|
||||
use actix_web::{App, HttpResponse, HttpServer, Responder, post, web};
|
||||
use actix_web::{App, HttpResponse, HttpServer, Responder, Result, post, web};
|
||||
use db::create_pool;
|
||||
use reqwest::Client;
|
||||
use serde::{Deserialize, Serialize};
|
||||
@@ -7,6 +7,118 @@ use sqlx::postgres::PgPool;
|
||||
mod db;
|
||||
mod models;
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize)]
|
||||
pub struct WeatherData {
|
||||
#[serde(rename = "areaType")]
|
||||
area_type: String,
|
||||
|
||||
#[serde(rename = "assignmentnumber")]
|
||||
assignment_number: String,
|
||||
|
||||
#[serde(rename = "atmosphericStability")]
|
||||
atmospheric_stability: String,
|
||||
|
||||
#[serde(rename = "averageWindDirection")]
|
||||
average_wind_direction: f64,
|
||||
|
||||
#[serde(rename = "averageWindSpeed")]
|
||||
average_wind_speed: f64,
|
||||
|
||||
#[serde(rename = "calculatedwindspeed")]
|
||||
calculated_wind_speed: f64,
|
||||
|
||||
#[serde(rename = "cloudIndex")]
|
||||
cloud_index: String,
|
||||
|
||||
#[serde(rename = "convertedWindSpeed")]
|
||||
converted_wind_speed: f64,
|
||||
|
||||
date: String,
|
||||
|
||||
#[serde(rename = "daySinceJanFirst")]
|
||||
day_since_jan_first: i32,
|
||||
|
||||
#[serde(rename = "hasMeasuredWindSpeed")]
|
||||
has_measured_wind_speed: bool,
|
||||
|
||||
hours: i32,
|
||||
|
||||
#[serde(rename = "inspectiontype")]
|
||||
inspection_type: String,
|
||||
|
||||
latitude: f64,
|
||||
longitude: f64,
|
||||
|
||||
#[serde(rename = "lowCloudiness")]
|
||||
low_cloudiness: String,
|
||||
|
||||
#[serde(rename = "measuredWindSpeed")]
|
||||
measured_wind_speed: f64,
|
||||
|
||||
#[serde(rename = "measurementHeight")]
|
||||
measurement_height: f64,
|
||||
|
||||
min: i32,
|
||||
openid: String,
|
||||
|
||||
#[serde(rename = "overallCloudiness")]
|
||||
overall_cloudiness: String,
|
||||
|
||||
#[serde(rename = "overallSuitability")]
|
||||
overall_suitability: String,
|
||||
|
||||
#[serde(rename = "pointWindSpeed")]
|
||||
point_wind_speed: f64,
|
||||
|
||||
#[serde(rename = "solarDeclination")]
|
||||
solar_declination: f64,
|
||||
|
||||
#[serde(rename = "solarRadiationLevel")]
|
||||
solar_radiation_level: f64,
|
||||
|
||||
#[serde(rename = "suitabilityDegree")]
|
||||
suitability_degree: String,
|
||||
|
||||
#[serde(rename = "sunAltitude")]
|
||||
sun_altitude: f64,
|
||||
|
||||
theta: f64,
|
||||
title: String,
|
||||
|
||||
#[serde(rename = "windDirection")]
|
||||
wind_direction: Vec<f64>,
|
||||
|
||||
#[serde(rename = "windDirectionStandardDeviation")]
|
||||
wind_direction_standard_deviation: f64,
|
||||
|
||||
#[serde(rename = "windDirectionSuitability")]
|
||||
wind_direction_suitability: String,
|
||||
|
||||
#[serde(rename = "windSpeed")]
|
||||
wind_speed: Vec<f64>,
|
||||
|
||||
#[serde(rename = "windSpeedSuitability")]
|
||||
wind_speed_suitability: String,
|
||||
}
|
||||
|
||||
#[post("/weather-test")]
|
||||
async fn post_weather_data(data: web::Json<WeatherData>) -> impl Responder {
|
||||
// 在这里处理接收到的数据
|
||||
println!("Received weather data: {:#?}", data);
|
||||
|
||||
// 示例:访问特定字段
|
||||
println!("Area Type: {}", data.area_type);
|
||||
println!("Wind Speeds: {:?}", data.wind_speed);
|
||||
println!("Location: ({}, {})", data.latitude, data.longitude);
|
||||
|
||||
// 返回成功响应
|
||||
web::Json(serde_json::json!({
|
||||
"status": "success",
|
||||
"message": "Weather data received successfully",
|
||||
"received_assignment": data.assignment_number
|
||||
}))
|
||||
}
|
||||
|
||||
// 定义请求体结构
|
||||
#[derive(Debug, Deserialize)]
|
||||
struct OpenIdRequest {
|
||||
@@ -214,6 +326,7 @@ fn create_server_config(
|
||||
.app_data(web::Data::new(http_client))
|
||||
.service(get_user_id)
|
||||
.service(get_openid)
|
||||
.service(post_weather_data)
|
||||
}
|
||||
|
||||
#[actix_web::main]
|
||||
|
||||
Reference in New Issue
Block a user