use fastapi_rust::core::{
App, Request, RequestContext, Response, ResponseBody, TestClient, };
fn hello_handler(_ctx: &RequestContext, _req: &mut Request) -> std::future::Ready<Response> {
std::future::ready(Response::ok().body(ResponseBody::Bytes(b"Hello, World!".to_vec())))
}
#[allow(clippy::needless_pass_by_value)]
fn check_eq<T: PartialEq + std::fmt::Debug>(left: T, right: T, message: &str) -> bool {
if left == right {
true
} else {
eprintln!("Check failed: {message}. left={left:?} right={right:?}");
false
}
}
fn main() {
println!("fastapi_rust Hello World Example");
println!("================================\n");
let app = App::builder()
.get("/", hello_handler)
.build();
println!("App created with {} route(s)\n", app.route_count());
let client = TestClient::new(app);
println!("Making request: GET /");
let response = client.get("/").send();
println!(
"GET / -> {} {}",
response.status().as_u16(),
response.status().canonical_reason()
);
println!("Response: {}\n", response.text());
if !check_eq(response.status().as_u16(), 200, "GET / should return 200") {
return;
}
if !check_eq(response.text(), "Hello, World!", "GET / should return body") {
return;
}
println!("Making request: GET /not-found");
let response = client.get("/not-found").send();
println!(
"GET /not-found -> {} {}",
response.status().as_u16(),
response.status().canonical_reason()
);
if !check_eq(
response.status().as_u16(),
404,
"Unknown routes should return 404",
) {
return;
}
println!("\nAll assertions passed!");
}