Rust 全栈开发 - 6 REST API

6. REST API

6.1 健康检查

构建的内容:

POST:/course

EGT: /courses/teacher_id

GET: /courses/teacher_id/courses_id

我们先来编写一下各文件中的代码

/Users/qinjianquan/ws/webservice/src/bin/server1.rs

use actix_web::{web,App,HttpResponse,HttpServer,Responder};
use std::io;

//configure route
pub fn general_routes(cfg:&mut web::ServiceConfig) {
     cfg.route("/health",web::get().to(health_check_handler));    
}

//configure handler
pub async fn health_check_handler()->impl Responder {
     HttpResponse::Ok().json("Actix Web Service is Running!")
}

//instantiate and run HTTP server

#[actix_rt::main]
async fn main() -> io::Result<()> {
     //construct App and configure route
     let app = move || App::new().configure(general_routes);
          
     //run HTTP server
     HttpServer::new(app).bind("127.0.0.1:3000")?.run().await
}

/Users/qinjianquan/ws/webservice/src/bin/teacher-service.rs

use actix_web::{web,App,HttpServer};
use std::io;
use std::sync::Mutex;

#[path = "../handlers.rs"]
mod handlers;
#[path = "../routers.rs"]
mod routers;
#[path = "../state.rs"]
mod state;

use routers::*;
use state::AppState;

#[actix_rt::main]
async fn main() -> io::Result<()> {
     let shared_data = web :: Data ::new(AppState{
          health_check_response: "I'm OK.".to_string(),
          visit_count: Mutex::new(0),

     });

     let app = move || {
          App::new()
          .app_data(shared_data.clone())
          .configure(general_routes)
     };

     HttpServer::new(app).bind("127.0.0.1:3030")?.run().await
}

/Users/qinjianquan/ws/webservice/src/handlers.rs

use super::state::AppState;
use actix_web::{web, HttpResponse};

pub async fn health_check_handler(
     app_state: web::Data<AppState>
) -> HttpResponse {
     let health_check_response = &app_state.health_check_response;
     let mut visit_count = app_state.visit_count.lock().unwrap();
     let response= 
          format!("{} {} times",health_check_response, visit_count);
     *visit_count +=1;
     HttpRes
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值