actix-web/actix-http/examples/res-ext.rs

54 lines
1.9 KiB
Rust

use std::{convert::Infallible, io};
use actix_http::{
body::EitherBody, HttpMessage as _, HttpService, Request, Response, StatusCode,
};
use actix_server::Server;
#[actix_rt::main]
async fn main() -> io::Result<()> {
env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));
Server::build()
.bind("hello-world", ("127.0.0.1", 8080), || {
HttpService::build()
.client_timeout(1000)
.client_disconnect(1000)
.finish(|req: Request| async move {
let mut res = Response::build(StatusCode::OK).body("Hello world!");
match req.path() {
"/" => {}
"/ext" => {
res.extensions_mut().insert(123u8);
}
"/more" => {
res.extensions_mut().insert(123u8);
res.extensions_mut().insert(123u16);
res.extensions_mut().insert(123u32);
res.extensions_mut().insert(123u64);
res.extensions_mut().insert(123u128);
res.extensions_mut().insert(123i8);
res.extensions_mut().insert(123i16);
res.extensions_mut().insert(123i32);
res.extensions_mut().insert(123i64);
res.extensions_mut().insert(123i128);
}
_ => {
return Ok(Response::not_found()
.map_body(|_, body| EitherBody::right(body)))
}
}
Ok::<_, Infallible>(res)
})
.tcp()
})?
.workers(4)
.run()
.await
}