<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      rust實現weatherforecast的獲取天氣webapi

      rust用來寫webapi可能有點大材小用,但是作為入門學習應該說是不錯的選擇。

      cargo new webapi創建一個webapi項目,在src下面新建handler文件夾和models文件夾。

      在models文件夾下面建立一個mod.rs和weatherforecast.rs文件。

      weatherforecast.rs文件新建我們需要的WeatherForecast類,附上Serialize,Deserialize接口(trait)實現。

      use chrono::NaiveDate;
      use serde::{Serialize, Deserialize};
      
      #[derive(Debug,Serialize,Deserialize)]
      pub struct WeatherForecast{  
          pub date:NaiveDate,
          pub temperature_c:i32,
          pub temperature_f:i32,
          pub summary:String
      }

      mod.rs文件作為管理模塊,實體類需要導入,有多少實體類都可以放進去,后續就方便從這個模塊中導出需要的類。

       

      當然rust的webapi需要導入web開發需要的庫,以及項目中需要的庫,看名字就大概的猜到是什么作用了。

      有了實體類,下面就寫下get接口的實現,作為一個webapi架子,只用內存做存儲

      同樣在handlers文件夾下面新建mod.rs和weatherforecast.rs

      handlers下面的weatherforecast.rs代碼如下

      use crate::models::weatherforecast::WeatherForecast;
      use actix_web::{get,HttpResponse,Responder};
      use chrono::{Duration, Utc};
      use rand::Rng;
      
      #[get("/getweatherforecast")]
      pub async fn getweatherforecast()->impl Responder{
          let mut rng = rand::thread_rng();
          let summaries: Vec<&str> = vec!["Sunny","Cloudy","Rainy","Stormy"];
          let weather_forecasts:Vec<WeatherForecast> = (1..=5).map(|index|{
              let date = Utc::now().date_naive() + Duration::days(index);
              let temperature_c = rng.gen_range(-20..=55);
              let summary = summaries[rng.gen_range(0..summaries.len())].to_string();
              let temperature_f =  32 + (temperature_c / 5 * 9);
              WeatherForecast{
                  date,
                  temperature_c,
                  temperature_f,
                  summary:summary
              }
          }).collect();
          HttpResponse::Ok().json(weather_forecasts)
      }

      handlers通過use  crate::models::weatherforecast::WeatherForecast引用了models的模塊,所以在main.rs中需要提前引入,代碼如下:

      #[path = "models/mod.rs"]
      mod models;
      #[path = "handlers/mod.rs"]
      mod handlers;
      
      use actix_web::{App,HttpServer};
      use handlers::*;
      
      #[actix_web::main]
      async fn main()->std::io::Result<()> {
          HttpServer::new(||{
              App::new()
              .service(weatherforecast::getweatherforecast)
          }).bind("127.0.0.1:8088")?.run().await
      }

      到這里代碼就寫完了,下面運行一下看看效果:訪問地址  127.0.0.1:8088/getweatherforecast

       

      示例代碼如下:

      rust/webapi at main · liuzhixin405/rust · GitHub

       

      posted @ 2023-06-05 17:08  星仔007  閱讀(428)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲区综合区小说区激情区| 久久AV中文综合一区二区| 国产又色又爽又黄的网站免费| 国产精品一亚洲av日韩| 国内精品久久久久影院不卡| 麻豆国产成人AV在线播放| 国产午夜精品久久一二区| 久久影院午夜伦手机不四虎卡| 国产精品一区二区国产馆| а∨天堂一区中文字幕| 99久久国产精品无码| 欧美人禽zozo动人物杂交| 内射囯产旡码丰满少妇| 变态另类视频一区二区三区| 久久青青草原亚洲AV无码麻豆| 水蜜桃视频在线观看免费18| 国产一区二区三区18禁| 无码精品国产va在线观看dvd| 狠狠人妻久久久久久综合蜜桃 | 国产午夜福利不卡在线观看| a男人的天堂久久a毛片| 最新亚洲人成网站在线观看| 亚洲综合无码一区二区三区不卡 | 中文字幕国产精品综合| 看亚洲黄色不在线网占| 亚洲人成网站18禁止无码| 国产伦视频一区二区三区| 国产做无码视频在线观看浪潮| 久久国产一区二区日韩av| 国产线播放免费人成视频播放 | 国产精品福利自产拍在线观看| 亚洲和欧洲一码二码三码| 中文字幕成人精品久久不卡| 在线a级毛片无码免费真人| 亚洲欧美人成电影在线观看| 一区二区三区在线色视频| 国产精品久久久久久福利| 一本色道国产在线观看二区 | 国产成人不卡无码免费视频| av一区二区中文字幕| 日韩精品在线观看一二区|