前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【大家的项目】JServer:用json文件做数据存储的零代码API测试服务器

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

作者头像
MikeLoveRust
发布2023-09-26 17:52:12
1460
发布2023-09-26 17:52:12
举报

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-07-19 16:19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • jserver
    • 开始使用
      • 路由
        • 数组 路由
        • 对象或单值 路由
        • 过滤器
        • 操作符
        • 分页
        • 排序
        • 切片
        • 库文件
        • 静态文件服务器
      • 命令行参数
        • 许可证
        相关产品与服务
        测试服务
        测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档