1 个不稳定版本

使用旧 Rust 2015

0.1.0 2017年1月6日

#8 in #hacker

Apache-2.0

74KB
565 代码行(不含注释)

Haxonite

Haxonite:黑客的坚如磐石 API 模拟

Haxonite 是一个易于使用的 Rust 编写的 API 模拟服务器。

目录

安装

您可以通过运行 cargo install haxonite 来安装 Haxonite。或者,您可以克隆存储库并运行 cargo build --release 来编译(或下载)项目。

如果您还没有安装 Rust,可以按照这些说明进行安装。

使用方法

$ haxonite --help
Haxonite 0.1.0 Jakub Matraszek
<[email protected]> Easy API mocking

USAGE:
    haxonite [OPTIONS] [SUBCOMMAND]

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

OPTIONS:
    -c, --config <FILE>    Sets a custom config file. Default: config.toml.
    -h, --host <HOST>      Run Haxonite on the host. Default: localhost.
    -p, --port <PORT>      Run Haxonite on the specified port. Default: 4000.

SUBCOMMANDS:
    help    Prints this message or the help of the given subcommand(s)
    new     Create new Haxonite project
$ haxonite new --help
haxonite-new 0.1.0
Jakub Matraszek <[email protected]>
Create new Haxonite project

USAGE:
    haxonite new [FLAGS] <project_name>

FLAGS:
    -f, --full       Use to create a project with full config.toml file
    -h, --help       Prints help information
    -V, --version    Prints version information

ARGS:
    <project_name>    Name of the project (will be used as a directory name)

您可以在这里了解更多关于使用 Haxonite 的信息。

示例

创建一个新的项目(您也可以使用 --full 选项来生成完整的配置示例)

$ haxonite new example
19:25:09 [INFO] haxonite::utils: Creating new project: example!

以下是根据 config.toml 配置文件创建的...

[server]
port = 4000
host = "localhost"

[requests.example_request]
method = "GET"
path = "/"
[[requests.example_request.responses]]
status = 200
content_type = "application/json"
response = "responses/haxonite.json"

[requests.assets_request]
type = "static"
path = "/public"
[[requests.assets_request.responses]]
response = "assets"

...以及一个示例 JSON 响应

$ cat responses/haxonite.json
{
  "haxonite": {
    "version": "{{ haxonite_version }}",
    "authors": "{{{ haxonite_authors }}}",
    "logo": "assets/haxonite.png"
  }
}

切换到新生成的项目目录并启动 Haxonite

$ cd example && haxonite
19:29:03 [INFO] haxonite: Processing config!
19:29:03 [INFO] haxonite: Processing config for static: RequestConfig { type_: Some("static"), method: None, path: Some("/public"), responses: Some([ResponseConfig { content_type: None, status: None, response: Some("assets"), weight: None }]) }!
19:29:03 [INFO] haxonite: Mounting static for: /public using static type of handler.

19:29:03 [INFO] haxonite: Processing config for example_request: RequestConfig { type_: None, method: Some("GET"), path: Some("/"), responses: Some([ResponseConfig { content_type: Some("application/json"), status: Some(200), response: Some("responses/haxonite.json"), weight: None }]) }!
19:29:03 [INFO] haxonite: Defining route for: / using single type of handler.

然后让我们向我们的模拟 API 发送一个请求并看看 Haxonite 返回什么

$ curl https://127.0.0.1:4000
{
  "haxonite": {
    "version": "0.1.0",
    "authors": "Jakub Matraszek <[email protected]>",
    "logo": "assets/haxonite.png"
  }
}

免责声明

该项目处于早期开发阶段。很多事情都可能发生变化。源代码中有几个 TODO 项尚未修复。

注意:Haxonite 是一个为我的私人用途而启动的项目。我专注于简单性,因为我通常不需要在模拟 API 时实现任何复杂的逻辑。因此,它缺少例如设置任意 HTTP 响应头或基于解析的参数或请求体进行请求匹配的支持。使用 Haxonite 模拟 XMLRPC 或 SOAP API 没有像 JSON 那样容易,但仍然可能(例如使用 chain 请求类型)。此外,目前还没有测试...

变更日志

您可以在这里查看变更日志。

贡献

  1. 叉取项目。
  2. 创建一个主题分支。
  3. 实现您的更改。
  4. 变更日志中添加条目。
  5. 提交。
  6. 将更改推送到主题分支。
  7. 创建一个拉取请求。

如果您更改了有关命令行选项或配置文件格式的任何内容,请更新 README.md 和 USAGE.md 文件。否则,拉取请求将被拒绝。

请记住,您的 git 提交信息要简短并富有信息量!

问题和疑问

使用 GitHub 的问题跟踪器来报告错误或功能请求。如果您想询问任何不是错误/功能请求的问题,请给我发邮件

自我推广

如果您喜欢 Haxonite — 给这个项目加星标并分享这个页面。您也可以在 Twitter 上关注我。

许可协议

您可以在 这里 查看完整的许可证。本项目采用 Apache 2.0 许可协议。

依赖项

~10MB
~213K SLoC