我在应用程序中使用 Iron Web 框架(用于 Rust 编程语言),并且在使用Router crate时我有一个暴露给 POST JSON 数据的路径。
它可以工作,但我必须对我的 JSON 数据进行百分比编码并将其作为字符串附加到我的 HTTP POST 请求的末尾 - 这可以工作但有点乏味,我想最终发布原始图像文件。
我希望能够按照以下 curl 命令的方式做一些事情:
curl -v -i --header "Content-Type: application/json" -X POST -d @some_local_json_file.json http://my_server_ip_address:3000/example_path/post/json_object_here
我目前收到一个HTTP/1.1 404 Not Found
错误:
curl -v -i --header "Content-Type: application/json" -X POST -d @some_local_json_file.json http://my_server_ip_address:3000/example_path/post/json
Note: Unnecessary use of -X or --request, POST is already inferred.
* Trying my_server_ip_address...
* Connected to my_server_ip_address (my_server_ip_address) port 3000 (#0)
> POST /example_path/post/json HTTP/1.1
> Host: my_server_ip_address:3000
> User-Agent: curl/7.45.0
> Accept: */*
> Content-Type: application/json
> Content-Length: 2354
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 404 Not Found
HTTP/1.1 404 Not Found
< Date: Mon, 28 Dec 2015 22:44:03 GMT
Date: Mon, 28 Dec 2015 22:44:03 GMT
< Content-Length: 0
Content-Length: 0
<
* Connection #0 to host my_server_ip_address left intact
我的main
功能的主要内容如下:
fn main() {
// create the router
let mut router = Router::new();
router.post("/example_path/post/:json", post_to_documents);
let mut mount = Mount::new();
// mount the router
mount.mount("/", router);
Iron::new(mount).http("0.0.0.0:3000").unwrap();
}
上面列出的post_to_documents
内容是:
fn post_to_documents(req: &mut Request) -> IronResult<Response>
{
let document_url_encoded = req.extensions.get::<Router>()
.unwrap()
.find("json")
.unwrap_or("/");
// Just return Ok
Ok(Response::with((status::Ok, "Ok")))
}
我想在document_url_encoded
变量中有 JSON 数据。(我猜它的名字很糟糕,因为在这种情况下它不会是 url/percent 编码的)