gpt4 book ai didi

rust - 为什么在 hyper 中匹配请求路径后没有任何反应?

转载 作者:行者123 更新时间:2023-11-29 08:34:52 24 4
gpt4 key购买 nike

我正在尝试使用 hyper 0.11.2 读取 POSTed JSON。打印“Reached”后我没有看到任何事情发生。

fn call(&self, req: hyper::server::Request) -> Self::Future {
let mut response: Response = Response::new();

match (req.method(), req.path()) {
(&Method::Post, "/assests") => {
println!("Reached ... "); //POST: 200 OK
//let (method, uri, _version, head
let mut res: Response = Response::new();
if let Some(len) = req.headers().get::<ContentLength>() {
res.headers_mut().set(len.clone());
}

println!("Reached xxx {:?}", req.body());
res.with_body("req.body()");
}
_ => {
response.set_status(StatusCode::NotFound);
}
};

futures::future::ok(response)
}

输出:

Reached ...
Reached xxx Body(Body { [stream of values] })

最佳答案

您创建了一个名为 response 的新 Response,然后创建了另一个名为 resResponse。然后您修改 res 并将其丢弃,从您的函数返回 response。如果您返回您修改的内容,您的服务器将返回 string "req.body()",正如您指定的那样。

fn call(&self, req: hyper::server::Request) -> Self::Future {
let mut response: Response = Response::new();

match (req.method(), req.path()) {
(&Method::Post, "/assets") => {
if let Some(len) = req.headers().get::<ContentLength>() {
response.headers_mut().set(len.clone());
}

response = response.with_body("req.body()");
}
_ => {
response.set_status(StatusCode::NotFound);
}
};

futures::future::ok(response)
}

不会将内容长度设置为无效值——您返回的字符串与上传数据的长度不匹配。

关于rust - 为什么在 hyper 中匹配请求路径后没有任何反应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46226982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com