1 个不稳定版本
使用旧 Rust 2015
0.1.0 | 2017年1月6日 |
---|
#8 in #hacker
74KB
565 代码行(不含注释)
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
请求类型)。此外,目前还没有测试...
变更日志
您可以在这里查看变更日志。
贡献
- 叉取项目。
- 创建一个主题分支。
- 实现您的更改。
- 在变更日志中添加条目。
- 提交。
- 将更改推送到主题分支。
- 创建一个拉取请求。
如果您更改了有关命令行选项或配置文件格式的任何内容,请更新 README.md 和 USAGE.md 文件。否则,拉取请求将被拒绝。
请记住,您的 git 提交信息要简短并富有信息量!
问题和疑问
使用 GitHub 的问题跟踪器来报告错误或功能请求。如果您想询问任何不是错误/功能请求的问题,请给我发邮件。
自我推广
如果您喜欢 Haxonite — 给这个项目加星标并分享这个页面。您也可以在 Twitter 上关注我。
许可协议
您可以在 这里 查看完整的许可证。本项目采用 Apache 2.0 许可协议。
依赖项
~10MB
~213K SLoC