Skip to content

Commit

Permalink
feat: Implement basic RESTful API endpoints for user management (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
0xBoji committed Oct 5, 2024
1 parent 88041c8 commit 0b15f56
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 2 deletions.
3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,6 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
rayon = "1.5"
tokio = { version = "1", features = ["full"] }
actix-web = "4"
6 changes: 6 additions & 0 deletions src/day16_to_day18/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
mod web_development;

pub fn run() {
println!("Days 16-18: Web Development");
web_development::examples();
}
46 changes: 46 additions & 0 deletions src/day16_to_day18/web_development.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
use actix_web::{web, App, HttpResponse, HttpServer, Responder};
use serde::{Deserialize, Serialize};

// định nghĩa user
#[derive(Serialize, Deserialize)]
struct User {
id: u32,
name: String,
}

// hàm req GET để lấy danh sách user
async fn get_users() -> impl Responder {
let users = vec![
User { id: 1, name: "Alice".to_string() },
User { id: 2, name: "Bob".to_string() },
];
HttpResponse::Ok().json(users)
}

// hàm req GET để get thông tin một detail của user
async fn get_user(path: web::Path<u32>) -> impl Responder {
let user_id = path.into_inner();
let user = User { id: user_id, name: format!("User {}", user_id) };
HttpResponse::Ok().json(user)
}

// hàm req POST để tạo user mới
async fn create_user(user: web::Json<User>) -> impl Responder {
HttpResponse::Created().json(user.into_inner())
}

// server
#[actix_web::main]
async fn main() -> std::io::Result<()> {
println!("Khởi động máy chủ web tại http://127.0.0.1:8080");

HttpServer::new(|| {
App::new()
.route("/users", web::get().to(get_users))
.route("/users/{id}", web::get().to(get_user))
.route("/users", web::post().to(create_user))
})
.bind("127.0.0.1:8080")?
.run()
.await
}
8 changes: 6 additions & 2 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,18 @@ pub mod day07_to_day09;
//Day 10 to day 12
pub mod day10_to_day12;

//Day 13 to day 15
pub mod day13_to_day15;

mod day13_to_day15;
//Day 16 to day 18
pub mod day16_to_day18;

fn main() {
// day01_to_day03::run();
// day04_to_day06::run();
// day07_to_day09::run();
// day10_to_day12::run();
day13_to_day15::run();
// day13_to_day15::run();
day16_to_day18::run();

}

0 comments on commit 0b15f56

Please sign in to comment.