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日 |
#301 在 HTTP服务器
97KB
1.5K SLoC
preroll
为使用async-std、Tide、Surf和类似工具的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:///{service_name}"(默认 postgres 端口)。 service_name来自于preroll::main!("service_name", ...)。
- 默认为
- 环境变量
PGMAXCONNECTIONS,默认 5 个连接。 - 环境变量
PGMAXLIFETIME,默认30(分钟)。 - 启用
PostgresRequestExt和test_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参考
许可证
依赖项
~38–55MB
~1M SLoC