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://127.0.0.1/{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