【发布时间】:2017-06-16 01:18:22
【问题描述】:
我在一个应用程序中使用 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 编码)
【问题讨论】: