#middleware #proxy #logging #routes #router #environment #port

simple_proxy

带有中间件的简单代理,易于定制,易于使用

13个版本 (7个稳定版本)

1.3.4 2021年4月20日
1.3.1 2020年6月18日
1.2.1 2019年6月13日
1.1.0 2019年2月13日
0.1.0 2018年5月24日

#1807 in 网络编程

Apache-2.0

27KB
669

简单代理

使用方法

use simple_proxy::middlewares::{router::*, Logger};
use simple_proxy::{Environment, SimpleProxy};

use structopt::StructOpt;

#[derive(StructOpt, Debug)]
struct Cli {
    port: u16,
}

#[derive(Debug, Clone)]
pub struct Config();

impl RouterConfig for Config {
    fn get_router_filename(&self) -> &'static str {
        "routes.json"
    }
}

#[tokio::main]
async fn main() {
    let args = Cli::from_args();

    let mut proxy = SimpleProxy::new(args.port, Environment::Development);
    let logger = Logger::new();
    let router = Router::new(&Config());

    // Order matters
    proxy.add_middleware(Box::new(router));
    proxy.add_middleware(Box::new(logger));

    // Start proxy
    let _ = proxy.run().await;
}

自定义中间件

您可以通过创建一个实现Middleware的struct来创建自己的中间件,该struct包含4个回调

  • before_request将在每次请求时运行
  • request_failure将在请求失败时运行
  • request_success将在请求成功时运行,您可以根据状态码或体来处理响应
  • after_request将在每次请求后运行

更多信息请参阅默认中间件

依赖关系

~6–20MB
~223K SLoC