【大家的项目】JServer:用json文件做数据存储的零代码API测试服务器

2023-09-26 17:52:12 浏览数 (2)

jserver

Rust 编写的 json 接口和静态文件服务器

灵感来自 typicode 采用 nodejs 编写的 json-server

30秒 零代码 实现模拟全功能 REST 接口(真的)

为前端开发者倾情打造的快速原型和模拟测试工具。

开始使用

安装 JServer

代码语言:javascript复制
cargo build --release
cp target/release/jserver /usr/bin/

创建一个 data.json 文件,准备一些数据

代码语言:javascript复制
{
  "posts": [
    { "id": 1, "title": "jserver", "author": "jupiter.gao" }
  ],
  "comments": [
    { "id": 1, "body": "some comment" }
  ],
  "profile": { "name": "jupiter" },
  "homepage": "https://apicenter.com.cn"
}

启动 JServer

代码语言:javascript复制
jserver

现在你可以直接访问 http://localhost:2901/api/posts/1 ,获得数据

代码语言:javascript复制
{ "id": 1, "title": "jserver", "author": "jupiter.gao" }

请求时,你需要知道:

  • 当你发送 POST, PUT, PATCH 或 DELETE 请求时,修改的数据将会自动保存到 data.json ,并发调用时保存也是安全的。
  • 请求体应该是合法的 JSON 对象或单个值。(比如 {"name": "Foobar"} "test string" 83.01
  • 唯一标识(默认为 id )是不可修改的。PUT 或 PATCH 请求中的任何 id 值都会被忽略。只有 POST 请求中的 id 会使用,不允许重复的 id
  • POST, PUT 或 PATCH 请求头应该指定 Content-Type: application/json

路由

根据之前的 data.json 文件,可以使用以下路由请求接口。

数组 路由

代码语言:javascript复制
GET    /api/posts
GET    /api/posts/1
POST   /api/posts
PUT    /api/posts/1
PATCH  /api/posts/1
DELETE /api/posts/1

对象或单值 路由

代码语言:javascript复制
GET    /api/profile
POST   /api/profile
PUT    /api/profile
PATCH  /api/profile

过滤器

代码语言:javascript复制
GET    /api/posts?title=jserver
GET    /api/posts?id=1

操作符

对于数值,可以使用下列后缀 _lt, _lte, _gt, _gte 分别表示 <, <=, >, >= 。 对于字符串,使用 _like 表示包含子字符串, _nlike 表示不包含子字符串。 对于数组,使用 _contains 表示包含元素, _ncontains 表示不包含元素。 对于数值、字符串和布尔值,使用 _ne 表示 !=

代码语言:javascript复制
GET    /api/posts?title_like=server
GET    /api/posts?id_gt=1&id_lt=3

分页

使用 _page 和可选的 _size 对返回数据进行分页。

代码语言:javascript复制
GET /api/posts?_page=7
GET /api/posts?_page=7&_size=20

默认每页返回 20 项,页号从 1 开始计数( 0 当做 1 处理)。

排序

增加 _sort_order 用来排序。

代码语言:javascript复制
GET /api/posts?_sort=views&_order=asc

多字段排序时,按下面格式请求:

代码语言:javascript复制
GET /api/posts?_sort=user,views&_order=desc,asc

切片

增加 _start 和 (_end_limit)

代码语言:javascript复制
GET /api/posts?_start=20&_end=30
GET /api/posts?_start=20&_limit=10

响应头中包含 X-Total-Count 用于表示结果总数。

库文件

代码语言:javascript复制
GET /db

静态文件服务器

你可以使用 JServer 提供静态文件服务,如 HTML, JS 和 CSS 文件,只需将文件放在 ./public 目录即可 或使用 --public-path 命令行参数指定其他的静态文件目录。

代码语言:javascript复制
mkdir public
echo 'hello world' > public/index.html
jserver
代码语言:javascript复制
jserver --public-path ./some-other-dir

命令行参数

代码语言:javascript复制
用法: jserver [选项]

选项:
  -b, --bind-address <服务绑定地址>  [default: 0.0.0.0:2901]
  -d, --db-path <数据json文件>       [default: ./data.json]
  -p, --public-path <静态文件路径>   [default: ./public]
  -i, --id <用作唯一标识的字段名>    [default: id]
      --debug
  -h, --help                         显示帮助信息
  -V, --version                      显示版本号

许可证

Apache License 2.0

Ext Link: https://github.com/jupitergao18/jserver

0 人点赞