如何从超级POST请求中提取数据?

时间:2018-10-02 13:01:22

标签: rust hyper

我正在尝试制作一个小型应用程序,它将作为接受GET和POST请求的网络服务器运行。我已经启动并运行它,它接受两个请求,但是我不知道如何从POST请求中提取数据。这是启动服务器并运行的代码:

extern crate futures;
extern crate hyper;

use hyper::service::service_fn_ok;
use hyper::{Body, Method, Response, Request, StatusCode};
// This is here because we use map_error.
use futures::{Future};

fn post_fn(req : Request<Body>) -> Response<Body> {
    println!("In post!");
    Response::new(Body::from("You posted something!"))
}

fn start_server() {
    let router =  || {
        service_fn_ok( |req| match (req.method(), req.uri().path()) {
            (&Method::GET, "/ping") => {
                println!("In ping");
                Response::new(Body::from("You pinged me!"))
            }
            (&Method::POST, "/") => {
                post_fn(req)
            }
            (_, _) => {
                let mut res = Response::new(Body::from("not found"));
                *res.status_mut() = StatusCode::NOT_FOUND;
                res
            }
        })
    };

    // Setup and run the server
    let addr = "127.0.0.1:3000".parse::<std::net::SocketAddr>().unwrap();

    let server = hyper::Server::bind(&addr).serve(router);

    hyper::rt::run(server.map_err(|e| {
        eprintln!("server error: {}", e);
    }));
}

fn main() {
    start_server();
}

基本上我想知道post_fn是什么,以便可以使用curl -X POST --data hello 'localhost:3000'打印出“ hello”。 最终,数据将是我反序列化的JSON字符串,但我不知道如何首先使用数据。

0 个答案:

没有答案