#http-service #tide #surf #honeycomb #sqlx #http-response #http-client

preroll

Rust http服务使用的async-std、Tide、Surf和类似工具的简单模板工具

29次发布

0.10.1 2022年4月7日
0.10.0 2021年12月29日
0.9.0 2021年10月28日
0.8.3 2021年7月19日
0.1.1 2020年12月22日

#301HTTP服务器

BlueOak-1.0.0

97KB
1.5K SLoC

preroll on crates.io Documentation (latest release)

preroll

为使用async-stdTideSurf和类似工具的Rust http服务提供的简单模板工具。

允许通过具有功能配置的内建工具设置服务,以实现服务的一致性,同时降低开发者的工作负担,并可以轻松地在不使用实时网络的情况下进行服务集成测试。

滚动到页面底部查看API参考

示例

use std::sync::Arc;

use tide::{Request, Route};

struct AppState {
    greeting: &'static str,
}

type AppRequest = Request<Arc<AppState>>;

async fn setup_app_state() -> preroll::SetupResult<AppState> {
    Ok(AppState {
        greeting: "Hello World!",
    })
}

fn setup_routes(mut server: Route<'_, Arc<AppState>>) {
    server
        .at("hello-world")
        .get(|req: AppRequest| async move {
            Ok(req.state().greeting)
        });
}

// The "magic" happens here!
preroll::main!("hello-world", setup_app_state, setup_routes);

功能

  • 通过preroll::main!进行模板化的main设置,具有自动配置的可选功能。
  • 包含所有扩展特征的preroll::prelude::*;
  • 带有许多详细信息的响应日志。
  • 错误形式的自动JSON响应为JsonError
  • 测试工具,具有轻松的模拟客户端设置。

可选功能

必须通过cargo features启用附加功能,例如。

[dependencies.preroll]
version = "0.5"
features = ["honeycomb", "postgres"]

可选附加功能的列表

  • "honeycomb":启用将跟踪记录到honeycomb.io
    • 环境变量HONEYCOMBIO_WRITE_KEY(必需)。
    • 环境变量 TRACELEVEL,用于设置跟踪级别过滤器,默认为 info
    • 写入名为 {service_name}-{environment} 的数据集。
      • service_name 来自于 preroll::main!("service_name", ...)
      • environment 来自于 ENVIRONMENT,或者默认为 "development"
  • "lambda-http":将 HTTP 监听器改为连接到 AWS Lambda 执行环境。
    • 不再作为常规 http 服务器可访问,但接受 http lambda 请求,就像它是一个。
    • 某些环境变量,例如 PORT,将被忽略。
    • 如果启用了 "honeycomb" 功能,则跟踪事件将写入 stdout,并且必须通过 Honeycomb 提供的层进行收集。见:https://docs.honeycomb.io/getting-data-in/integrations/aws/aws-lambda/
  • "postgres":启用具有事务的 postgres 连接池。
    • 环境变量 PGURL,应该是一个格式正确的 postgres:// 数据库 URL。
      • 默认为 "postgres://127.0.0.1/{service_name}"(默认 postgres 端口)。
      • service_name 来自于 preroll::main!("service_name", ...)
    • 环境变量 PGMAXCONNECTIONS,默认 5 个连接。
    • 环境变量 PGMAXLIFETIME,默认 30(分钟)。
    • 启用 PostgresRequestExttest_utils::create_client_and_postgres

其他可选功能的列表

  • "panic-on-error":使响应记录器在错误时 [panic] 而不是记录。
    • 请勿在生产环境中使用。防止 --release 编译。

通用环境设置

以下环境变量在 preroll::main! 期间读取

  • ENVIRONMENT:如果以 prod 开头,则加载生产模式 JSON 记录器,避免使用 .env
  • FORCE_DOTENV:覆盖生产模式,强制从 .env 加载环境。
  • HOST:设置此服务将监听的域名。默认为 "127.0.0.1"
  • LOGLEVEL:设置记录器的级别过滤器,生产模式下默认为 info,开发模式下默认为 debug
  • PORT:设置此服务将监听的端口。默认为 8080

注意

该包在模板化服务和与附加功能(如Postgres(通过SQLx)的交互)方面有意识地进行了某些规定。

API参考

在Docs.rs上的API参考

许可证

BlueOak Model License 1.0.0下授权 — 通过DCO 1.1进行贡献

依赖项

~38–55MB
~1M SLoC