#actix-web #mock-server #json #json-store #json-server

app jsonox

基于CLI的RESTful JSON服务器+存储,用Rust编写

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,以及使用 POSTPUT
  • 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
    
  • 查看帮助和指南

    jsonox --help
    
    • 使用 -h--help 获取帮助。

REST API(正常模式)

以下是如何在以下方式中在 任意路由 上构建 REST API 端点

  • 将以下内容 POSTPUT/pets/cat

    { "cute": true }
    
  • 然后,在 /pets/catGET 将收到

    { "cute": true }
    
  • 类似地,您还可以在 /pets/catDELETE 存储的数据,这将也会收到

    { "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"] }
    
  • 然后您可以在上述端点路径上执行 GETPOSTPUTDELETE

注意:POSTPUT 是可以 互换 的,并且在 此模式 中它们工作得完全一样。这是由于引用的路径是明确指定的。为了在 POSTPUT 的情况下允许不同的响应,请考虑使用 只读模式

只读模式

在此模式下,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.jsonpost.jsonput.jsondelete.json 的文件,而不是 index.json
    • get.json 将包含对该路径的 GET 请求的 响应体。类似地,post.jsonput.jsondelete.json 将分别包含对该路径的 POSTPUTDELETE 请求的 响应体
    • 因此,根据上述结构
      • /pets 将只有 GETDELETE
      • /pets/cat 将只有 GET
      • /pets/dog 将只有 GETPOST
      • /toys/doll 将具有 GETPOSTPUTDELETE 方法。
  • 即使您对一个路径执行 DELETE 操作,您创建的文件和路径也不会被删除。

  • 如果您在之间更改模式,并在 正常模式 下执行 DELETE 操作,这将仅删除相应路径下的 index.json 文件,而不会删除您创建的其他 get.jsonpost.json 等文件。

  • 类似于正常模式,在 GET 方法上 / 将显示活动端点。

    { "active_paths": ["pets", "pets/cat", "pets/dog", "toys/doll"] }
    

依赖关系

~25–36MB
~629K SLoC