2个版本
使用旧的Rust 2015
0.1.1 | 2017年4月9日 |
---|---|
0.1.0 | 2017年4月9日 |
#12 in #service-request
5KB
iron_requestid
Iron中间件,用于生成请求的唯一ID。
此包使用UUID4生成的ID。安装中间件后,请求ID可以在请求处理器中这样访问
fn request_handler(request: &mut Request) -> IronResult<Response> {
// ...
let request_id = request.extensions.get::<RequestId>().unwrap();
// ...
}
有一个示例服务安装了此中间件并检索请求的ID。此代码位于examples/service.rs。运行示例服务并发送请求以进行测试
cargo run --example service &
curl localhost:3000/foo
下面也显示了示例服务的源代码
extern crate iron;
extern crate iron_requestid;
use iron::prelude::*;
use iron::status::Status;
use iron_requestid::{RequestId, RequestIds};
fn main() {
let mut chain = Chain::new(return_request_handler);
let (request_ids_before, request_ids_after) = RequestIds::new();
chain.link_before(request_ids_before);
chain.link_after(request_ids_after);
Iron::new(chain).http("127.0.0.1:3000").unwrap();
}
fn return_request_handler(request: &mut Request) -> IronResult<Response> {
match request.extensions.get::<RequestId>() {
Some(id) => Ok(Response::with((
Status::Ok,
id.to_string()))),
None => Ok(Response::with((
Status::InternalServerError,
"could not get request ID")))
}
}
依赖项
~5.5MB
~123K SLoC