1个不稳定版本

0.1.0 2021年1月23日

#393 in 构建工具

LGPL-3.0

34KB
778

actix-cli

使用Actix创建Web服务的命令行工具

  • 最小化服务器,带有健康检查和就绪检查
  • 启用容错选项可使用Bastion
  • 可以通过--request-logger标志启用日志中间件选项
  • 基本的CRUD控制器
  • Unwrap到Crate Error
  • 数据库配置
  • 可以通过--auth标志启用认证中间件选项
  • 可以通过标志启用基本的Docker配置
  • Config.toml读取路由配置
  • Config.toml读取模型配置

如果没有定义数据库,将创建一个Context以支持基本的HashMap

安装

  1. 如果您计算机中没有Rust,可以运行make setup或访问https://rustup.rs/
  2. 确保您的/usr/local/binPATH中。
  3. 然后运行make build
  • 暂不支持Windows

用法

actix-cli 0.1.0
A CLI to create actix-web projects boilerplate

USAGE:
    actix-cli [OPTIONS] --context <context> --name <name>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -c, --config-file <config-file>          Config.toml file path
        --context <context>                  Which database configuration. Currently only `InMemory` allowed [possible
                                             values: InMemory]
    -f, --fault-tolerant <fault-tolerant>    Enables Bastion for fault tolerant system [default: true]
    -n, --name <name>                        Defines project name in Cargo.toml
    -r, --request-logger <request-logger>    Enables request logger as `[IP:%a DATETIME:%t REQUEST:\"%r\" STATUS: %s
                                             DURATION:%D X-REQUEST-ID:%{x-request-id}o] and `"[x-request-id:
                                             Uuid::new_v4()]` [default: true]
  • fault-tolerantbool
  • request-loggerbool
  • nameString
  • config-filestd::path::PathBuf
  • context:包含InMemory的case insensitive枚举,未来还将包含PostgresDBDynamoDB

示例

通过执行命令 actix-cli -n maluco-cli -r true -f true --config-file actix-cli/Config.toml --context inmemory,在以下 CRUD 部分定义的 Config.toml 中,结果可以在仓库中找到

Config.toml

以下是一些 Config.toml 的示例。

CRUD

[crud]
name = "object"

[crud.routes]
create = "object/new"
read = "object/get/{id}"
update = "object/update/{id}"
delete = "object/delete/{id}"
list = "object/get"

[crud.model]
name = "String"
age = "usize"
school = "String"
  • name 是必需的。
  • routes 是必需的,所有路由都应该为字符串。
  • 如果 routes 不以 name 开头,则会自动添加 name
  • model 是必需的,所有类型都应该是有效的 Rust 类型字符串。

依赖项

~3.5MB
~62K SLoC