2个不稳定版本
0.2.0 | 2021年1月27日 |
---|---|
0.1.0 | 2021年1月21日 |
#788 in HTTP服务器
27KB
444 行
jsonox 🛰
基于CLI的RESTful JSON服务器+存储,用Rust编写。
特性 🚀
- 通过简单地将JSON POST 到该路由来在任何路由上设置API端点。
- 端点支持使用 GET 获取和使用 DELETE 删除存储的JSON,以及使用 POST 或 PUT。
- JSON数据以
*.json
文件的形式存储在json_data
目录下。 - 在根路径(
/
)下查看所有活动的端点。
[免责声明:此程序专为开发目的设计。在生产环境中使用时请自行承担风险!]
安装 🔧
您可以通过以下3种方式安装:使用预编译的二进制文件、从Crate安装或使用rust工具链手动从源代码构建。为二进制文件和(如果从源代码构建)必要的可执行权限。
预编译的二进制文件
-
从最新的发布版下载适用于您的平台的二进制文件。
二进制文件 平台 jsonox-linux-amd64 64位Linux(Ubuntu、Debian等) jsonox-macos-amd64 64位Mac OS jsonox-win-amd64.exe 64位Windows 7+ jsonox-linux-armv7 ARMv7 Linux:树莓派、Debian、Ubuntu jsonox-linux-armv6 (未测试!)ARMv6 Linux:树莓派Zero、Debian、Ubuntu
从Crate安装
-
使用cargo install
cargo install jsonox
或从源代码构建
-
克隆仓库并运行
cargo build --lock --release
-
编译的二进制文件将位于
target/release/jsonox
初始设置(从二进制文件/源代码安装时)
-
设置可执行权限
chmod +x jsonox
-
将二进制文件复制到您的
$PATH
目录(可选)cp jsonox ~/.local/bin/ #for linux
使用 📡
通过CLI运行服务器,然后设置REST API端点或使用只读模式。
命令行(CLI)
注意:在以下示例中,如果您使用本地二进制文件,可能需要使用./jsonox
。
-
简单的带日志的服务器
jsonox
-
指定自定义绑定地址
jsonox -b localhost:7000
- 使用
-b
或--bind-addr
- 地址格式:
<IP:PORT>
- 使用
-
禁用日志
jsonox --quiet
- 使用
-q
或--quiet
模式下静音。
- 使用
-
使用 只读 模式
jsonox --read-only
- 使用
-r
或--read-only
用于 只读模式。
- 使用
-
查看帮助和指南
jsonox --help
- 使用
-h
或--help
获取帮助。
- 使用
REST API(正常模式)
以下是如何在以下方式中在 任意路由 上构建 REST API 端点
-
将以下内容 POST 或 PUT 到
/pets/cat
{ "cute": true }
-
然后,在
/pets/cat
上 GET 将收到{ "cute": true }
-
类似地,您还可以在
/pets/cat
上 DELETE 存储的数据,这将也会收到{ "cute": true }
-
上述请求将在
./jsonox_data
下的文件设置以下结构- pets/ - cat/ - index.json
-
在根端点
/
上GET
将显示所有活动端点{ "active_paths": ["pets/cat"] }
您也可以通过在 ./jsonox_data
下创建类似结构的文件来设置自己的 API
- pets/
- dog/
- index.json
- cat/
- index.json
- index.json
- toys/
- doll/
- index.json
-
然后,在
/
上GET
将显示活动端点{ "active_paths": ["pets", "pets/cat", "pets/dog", "toys/doll"] }
-
然后您可以在上述端点路径上执行 GET、POST、PUT 和 DELETE。
注意:POST 和 PUT 是可以 互换 的,并且在 此模式 中它们工作得完全一样。这是由于引用的路径是明确指定的。为了在 POST 和 PUT 的情况下允许不同的响应,请考虑使用 只读模式。
只读模式
在此模式下,jsonox 仅读取存储的 json 文件,在 POST/DELETE 的情况下 不创建/删除 它们,与上面解释的正常模式不同。当您只需要模拟 API 响应并且后端不严格遵循 REST 标准时,这很有用。您还可以将 ./jsonox_data
记录在您的版本控制中,以存储 API 响应结构,因为它不会根据此模式中的模拟/测试而更改。
-
首先在
./jsonox_data
中创建文件- pets/ - dog/ - get.json - post.json - cat/ - get.json - get.json - delete.json - toys/ - doll/ - get.json - post.json - put.json - delete.json
- 在 只读 模式下,我们创建类似
get.json
、post.json
、put.json
和delete.json
的文件,而不是index.json
。 get.json
将包含对该路径的 GET 请求的 响应体。类似地,post.json
、put.json
和delete.json
将分别包含对该路径的 POST、PUT 和 DELETE 请求的 响应体。- 因此,根据上述结构
/pets
将只有 GET 和 DELETE。/pets/cat
将只有 GET。/pets/dog
将只有 GET 和 POST。/toys/doll
将具有 GET、POST、PUT 和 DELETE 方法。
- 在 只读 模式下,我们创建类似
-
即使您对一个路径执行 DELETE 操作,您创建的文件和路径也不会被删除。
-
如果您在之间更改模式,并在 正常模式 下执行 DELETE 操作,这将仅删除相应路径下的
index.json
文件,而不会删除您创建的其他get.json
、post.json
等文件。 -
类似于正常模式,在
GET
方法上/
将显示活动端点。{ "active_paths": ["pets", "pets/cat", "pets/dog", "toys/doll"] }
依赖关系
~25–36MB
~629K SLoC