ngrok-rust 项目教程

ngrok-rust 项目教程

ngrok-rustEmbed ngrok secure ingress into your Rust apps with a single line of code.项目地址:https://gitcode.com/gh_mirrors/ng/ngrok-rust

1. 项目的目录结构及介绍

ngrok-rust/
├── Cargo.toml
├── README.md
├── src/
│   ├── lib.rs
│   ├── online_tests.rs
│   └── ...
├── examples/
│   ├── basic_http.rs
│   ├── axum_example.rs
│   └── ...
└── tests/
    └── ...

目录结构介绍

  • Cargo.toml: 项目的依赖和元数据配置文件。
  • README.md: 项目的基本介绍和使用说明。
  • src/: 包含项目的核心代码,如 lib.rs 是库的入口文件,online_tests.rs 包含在线测试代码。
  • examples/: 包含多个示例代码,如 basic_http.rsaxum_example.rs,展示了如何使用 ngrok-rust 进行基本的 HTTP 服务和与 axum 框架的集成。
  • tests/: 包含项目的测试代码。

2. 项目的启动文件介绍

src/lib.rs

lib.rsngrok-rust 库的入口文件,定义了库的主要功能和结构。它包含了 ngrok 模块的初始化和主要功能的实现。

examples/basic_http.rs

basic_http.rs 是一个简单的示例,展示了如何使用 ngrok-rust 启动一个基本的 HTTP 服务。代码如下:

use ngrok::prelude::*;
use hyper::service::{make_service_fn, service_fn};
use hyper::{Body, Request, Response, Server};
use std::convert::Infallible;

async fn handle_request(_req: Request<Body>) -> Result<Response<Body>, Infallible> {
    Ok(Response::new(Body::from("Hello, ngrok!")))
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let ngrok = ngrok::Session::builder()
        .authtoken_from_env()
        .connect()
        .await?;

    let tunnel = ngrok.http_endpoint().listen().await?;

    let make_svc = make_service_fn(|_conn| {
        async { Ok::<_, Infallible>(service_fn(handle_request)) }
    });

    let server = Server::builder(tunnel).serve(make_svc);

    println!("Server running at: {}", tunnel.url());

    server.await?;

    Ok(())
}

examples/axum_example.rs

axum_example.rs 展示了如何将 ngrok-rustaxum 框架集成,启动一个基于 axum 的 HTTP 服务。

3. 项目的配置文件介绍

Cargo.toml

Cargo.toml 是 Rust 项目的依赖和元数据配置文件。它定义了项目的名称、版本、作者、依赖等信息。以下是 ngrok-rustCargo.toml 示例:

[package]
name = "ngrok-rust"
version = "0.13.1"
authors = ["Joel Hans <joel@ngrok.com>"]
edition = "2018"

[dependencies]
arc-swap = "1.5.1"
async-rustls = "0.3.0"
async-trait = "0.1.59"
awaitdrop = "0.1.1"
axum = "0.6.1"
base64 = "0.13.1"
bytes = "1.3.0"
futures = "0.3.25"
hostname = "0.3.1"
hyper = "0.14.23"
muxado = "0.4"
once_cell = "1.17.1"
parking_lot = "0.12.1"
regex = "1.7.3"
rustls-pemfile = "1.0.1"
serde = "1.0.149"
serde_json = "1.0.89"
thiserror = "1.0.37"
tokio = "1.23.0"
tokio-retry = "0.3.0"
tokio-util = "0.7.4"
tracing = "0.1.37"

[dev-dependencies]
anyhow = "1.0.66"
flate2 = "1.0.25"
paste = "1.0.11"
rand = "0.8.5"
reqwest = "0.11.13"

配置文件介绍

  • [package]: 定义了项目的名称、版本、作者和 Rust 版本。
  • [dependencies]: 列出了项目所需的所有依赖库及其版本。
  • [dev-dependencies]: 列出了开发和测试所需的依赖库。

通过这些配置,ngrok-rust 项目能够正确地管理和使用其依赖库,确保项目的稳定性和功能性。

ngrok-rustEmbed ngrok secure ingress into your Rust apps with a single line of code.项目地址:https://gitcode.com/gh_mirrors/ng/ngrok-rust

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祝轩驰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值