mirror of
https://github.com/zerotier/ratpack.git
synced 2026-05-22 16:27:23 -07:00
@@ -0,0 +1,23 @@
|
||||
use http::{Request, Response};
|
||||
use hyper::Body;
|
||||
use ratpack::{app::App, compose_handler, handler::Params, HTTPResult, ServerError};
|
||||
|
||||
async fn hello(req: Request<Body>, _resp: Option<Response<Body>>, params: Params) -> HTTPResult {
|
||||
let name = params.get("name").unwrap();
|
||||
let bytes = Body::from(format!("hello, {}\n", name));
|
||||
|
||||
return Ok((
|
||||
req,
|
||||
Some(Response::builder().status(200).body(bytes).unwrap()),
|
||||
));
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), ServerError> {
|
||||
let mut app = App::new();
|
||||
app.get("/:name", compose_handler!(hello));
|
||||
|
||||
app.serve("127.0.0.1:3000").await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
+6
-4
@@ -70,14 +70,16 @@ impl App {
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn serve(&'static self, addr: String) -> Result<(), ServerError> {
|
||||
pub async fn serve(self, addr: &str) -> Result<(), ServerError> {
|
||||
let socketaddr: SocketAddr = addr.parse()?;
|
||||
|
||||
let s = self.clone();
|
||||
let sfn = service_fn(move |req: Request<Body>| s.dispatch(req));
|
||||
|
||||
let tcp_listener = TcpListener::bind(socketaddr).await?;
|
||||
loop {
|
||||
let s = self.clone();
|
||||
let sfn = service_fn(move |req: Request<Body>| {
|
||||
let s = s.clone();
|
||||
async move { s.clone().dispatch(req).await }
|
||||
});
|
||||
let (tcp_stream, _) = tcp_listener.accept().await?;
|
||||
tokio::task::spawn(async move {
|
||||
if let Err(http_err) = Http::new()
|
||||
|
||||
Reference in New Issue
Block a user