『前端必备』本地数据接口—json-server

article/2025/10/31 22:00:29

文章目录

      • json-server介绍
        • 简介
        • 操作步骤
      • 操作数据
        • 增(POST)
        • 删(DELETE)
        • 改(UPDATE、PATCH)
        • 查(GET)
        • 筛选
        • 分页
        • 排序
        • 切片(分页)
        • 特殊符号
          • 添加`_gte`或`_lte`获取范围
          • 添加`_ne`以排除值
          • 添加`_like`到过滤器(支持正则表达式)
        • 全文搜索
        • 关系
          • 要包含子资源,请添加` _embed`
          • 要包含父资源,请添加 `_expand`
          • 获取或创建嵌套资源(默认为一级)

json-server介绍

简介

json-server 是一款小巧的接口模拟工具,一分钟内就能搭建一套 Restful 风格的 api,尤其适合前端接口测试使用。
只需指定一个 json 文件作为 api 的数据源即可,使用起来非常方便,30秒入门——可以对接口数据进行增删改查。
进阶操作还支持分页,排序等操作。

开源地址
主页地址:https://www.npmjs.com/package/json-server
Github项目地址:https://github.com/typicode/json-server
https://gitcode.net/mirrors/typicode/json-server?utm_source=csdn_github_accelerator

操作步骤

  1. 全局安装 json-server
npm i -g json-server# 查看版本
json-server -v
  1. 创建一个 db.json 数据文件
{"posts": [{ "id": 1, "title": "json-server", "author": "typicode" }],"comments": [{ "id": 1, "body": "some comment", "postId": 1 }],"profile": { "name": "typicode" }
}

注意: 数据与数据之间的关系,例如:posts——postId

  1. 启动 json-server 接口服务器
# 默认端口为3000
json-server --watch db.json
或
json-server --watch db.json --port 端口号

在这里插入图片描述

  1. 浏览器访问 http://localhost:3000/posts/1,你会得到
{ "id": 1, "title": "json-server", "author": "typicode" }

补充

  • 如果您发出 POST、PUT、PATCH 或 DELETE 请求,更改将自动安全地保存到 db.json 文件中。
  • 注意 Id 值是不可变的。

操作数据

增(POST)

// 添加新闻
export const addNews = (params) => request.post(`/news`, params)

删(DELETE)

// 删除新闻
export const deleteNews = (params) => request.delete(`/news/${params.id}`)

改(UPDATE、PATCH)

// 修改新闻
// update: 需要传所有参数,没传的为undefiend
export const patchNews = (params) => request.patch(`/news/${params.id}`, params)
// patch:只传需要修改的参数,没传的默认不修改
export const patchNews = (params) => request.patch(`/news/${params.id}`, params)

查(GET)

// 获取用户列表
export const queryUserList = () => request.get(`/users?_expand=role`)// 获取用户信息
export const queryUserInfo = (params) => request.get(`/users/${params.id}?_expand=role`)

筛选

使用 . 访问筛选

GET /posts?title=json-server&author=typicode
GET /posts?id=1&id=2
GET /comments?author.name=typicode

分页

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

在Link标题,你会得到first,prev,next和last链接。

GET /posts?_page=7
GET /posts?_page=7&_limit=20

默认返回10项

排序

添加_sort_order(默认升序)

GET /posts?_sort=views&_order=asc
GET /posts/1/comments?_sort=votes&_order=asc

对于多个字段,请使用以下格式:

GET /posts?_sort=user,views&_order=desc,asc

切片(分页)

添加_start_end_limit

GET /posts?_start=20&_end=30
GET /posts/1/comments?_start=20&_end=30
GET /posts/1/comments?_start=20&_limit=10

Array.slice完全一样工作(即_start开始_end结束)

特殊符号

添加_gte_lte获取范围
GET /posts?views_gte=10&views_lte=20
添加_ne以排除值
GET /posts?id_ne=1
添加_like到过滤器(支持正则表达式)
GET /posts?title_like=server

全文搜索

添加 q

GET /posts?q=internet

关系

要包含子资源,请添加 _embed
GET /posts?_embed=comments
GET /posts/1?_embed=comments
要包含父资源,请添加 _expand
GET /comments?_expand=post
GET /comments/1?_expand=post
获取或创建嵌套资源(默认为一级)
GET  /posts/1/comments
POST /posts/1/comments

命令行使用

json-server [options] <source>
Options:--config, -c       Path to config file           [default: "json-server.json"]--port, -p         Set port                                    [default: 3000]--host, -H         Set host                             [default: "localhost"]--watch, -w        Watch file(s)                                     [boolean]--routes, -r       Path to routes file--middlewares, -m  Paths to middleware files                           [array]--static, -s       Set static files directory--read-only, --ro  Allow only GET requests                           [boolean]--no-cors, --nc    Disable Cross-Origin Resource Sharing             [boolean]--no-gzip, --ng    Disable GZIP Content-Encoding                     [boolean]--snapshots, -S    Set snapshots directory                      [default: "."]--delay, -d        Add delay to responses (ms)--id, -i           Set database id property (e.g. _id)         [default: "id"]--foreignKeySuffix, --fks  Set foreign key suffix, (e.g. _id as in post_id)[default: "Id"]--quiet, -q        Suppress log messages from output                 [boolean]--help, -h         Show help                                         [boolean]--version, -v      Show version number                               [boolean]
Examples:json-server db.jsonjson-server file.jsjson-server http://example.com/db.jsonhttps://github.com/typicode/json-server
您还可以在json-server.json配置文件中设置选项。{"port": 3000
}

http://chatgpt.dhexx.cn/article/FbfTEI8l.shtml

相关文章

接口接收JSON数据

1. 使用场景&#xff1a;定义接口供对方调用。请求数据为JSON格式&#xff0c;请求方法为post&#xff0c;请求参数如下&#xff1a; { "num":" 1600330803432", "comCode": "feisu" } 2. 接口接收方法 ResponseBody public Ba…

JSON和API接口初识

首先认识一下JSON JSON官网&#xff1a;http://www.json.org/json-zh.html JSON是一种数据格式&#xff0c;是一种在互联网传输中运用最多的数据交换语言&#xff0c;由于它轻便、灵巧&#xff0c;且能从各种语言中完全独立出来&#xff0c;所以成为目前最理想的数据交换语言…

Java数据接口编写简单例子,Java Json解析,服务端接口输出Json数据,客户端通过HTTP获取接口Json数据

实现效果 实现原因 目前主流的CS结构&#xff0c;数据都是通过RESTful风格接口形式呈现&#xff0c;不管是桌面级应用程序还是手机端&#xff0c;接口是我们获取数据的大多数选择&#xff0c; 主流数据接口呈现形式主要是Json和Xml&#xff0c;后者目前基本渐行渐远。Json的轻量…

json接口(使用,以及自定义)

json使用 在spring boot中&#xff0c;返回一个数组,哈希表&#xff0c;spring boot会自动将List,HashMap转化为json,因此不要自定义转化。 如果自定义转化&#xff0c;后端会爆出一个警告&#xff0c;并且前端出现500&#xff08;404&#xff09;&#xff0c;无法访问。因此…

前后端角度看接口(什么是json)?

文章目录 什么是JSON&#xff1f;为什么需要JSON&#xff1f;总结 什么是JSON&#xff1f; JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集&#xff0c;采用完全独立于编程语言的文本格…

JSON接口

RestController 相当于ControllerResponseBody两个注解的结合&#xff0c;返回json数据&#xff0c;不能返回jsp,html页面。 Autowired 对类成员变量、方法及构造函数进行标注&#xff0c;让 spring 完成 bean 自动装配的工作。 PostMapping 映射一个POST请求。 PutMapping 处理…

JSON端口操作实例

JSON 端口可直接实现在 JSON 和 XML 之间进行转换。端口会自动检测输入文件是 JSON 还是 XML&#xff0c;然后将文件在两种格式间相互转换。 该端口较多的是运用在API接口调用集成方案的项目当中&#xff0c;我们以百思买项目为例&#xff0c;知行之桥将接收到的百思买的EDI报…

JSON-初识+解析

1. JSON 1.1 什么是JSON JSON&#xff08;JavaScript Object Notation, JS 对象标记&#xff09;&#xff1a;是一种轻量级的数据交换格式。JSON使用JavaScript 语法来描述数据对象&#xff0c;采用完全独立于语言的文本格式&#xff0c;易于存储和交换。 JSON 的网络媒体类型…

unity协程coroutine 简明教程

本篇内容基于 https://gamedevbeginner.com/coroutines-in-unity-when-and-how-to-use-them/ 以及官方教程 为什么使用协程 协程非常适合设置需要随时间发生变化的游戏逻辑。很自然我们会想到update&#xff0c;update里指出每一帧unity会执行什么操作。协程则可以将代码从up…

浅析Unity协程实现原理

介绍 协程Coroutine在Unity中一直扮演者重要的角色。可以实现简单的计时器、将耗时的操作拆分成几个步骤分散在每一帧去运行等等&#xff0c;用起来很是方便。 但是&#xff0c;在使用的过程中有没有思考过协程是怎么实现的&#xff1f;为什么可以将一段代码分成几段在不同帧执…

Unity协程和线程的区别深入理解(附实验展示)

Unity协程和线程的区别附实验展示 写在前面协程、进程、线程的概念进程与线程的区别协程与线程的区别实验1&#xff1a;协程中执行普通函数实验2&#xff1a;协程中开启另一个协程实验3&#xff1a;协程中开启WWW请求实验4&#xff1a;一个脚本中多个协程访问临界资源实验5&…

Unity 协程 Unity Task UniTask

协程 使用 StartCoroutine 和 IEnumerator yield return null 暂停执行并随后在下一帧恢复 yield return new WaitForSeconds(1f); 延迟1秒 waitfor系列有好几个 WaitForSeconds 和 WaitForSecondsRealtime 的区别 使用缩放时间将协程执行暂停指定的秒数。 实际暂停时间等于…

Unity 协程探究

一、官方手册中的描述 1、Manual/Coroutines 函数在调用时, “从调用到返回” 都发生在一帧之内&#xff0c;想要处理 “随时间推移进行的事务”&#xff0c; 相比Update&#xff0c;使用协程来执行此类任务会更方便。 协程在创建时&#xff0c;通常是一个 “返回值类型 为 …

Unity 协程底层原理解析

1、协程 unity是单线程设计的游戏引擎&#xff0c;unity实际上有多条渲染线程&#xff0c;但对于unity调用我们编写的游戏脚本&#xff0c;都是放在一个主线程当中进行调度的。因此对于我们写的游戏脚本unity是单线程的。 协程不是进程或者线程&#xff0c;它的执行过程更类似…

Unity协程那些事儿

Unity协程那些事儿 1、什么是协程&#xff1f;2、协程的使用3、关于yield4、关于IEnumerator/IEnumerable5、从IEnumerator/IEnumerable到yield6、Unity协程机制的实现原理7、源码分析8、总结 1、什么是协程&#xff1f; 用过Unity的应该都知道协程&#xff0c;今天就给大家来…

Unity⭐️当Unity协程遇到while

文章目录 Unity协程是一个老生常谈的知识点了&#xff0c;但今天博主却差点被一篇文章忽悠了 那就是这句话&#xff1a; 为什么说这句话不对呢 那就是当遇到while时&#xff0c;我们再来检验这句话的正确性&#xff1a; 按上面那句话&#xff0c;应该每次yield return后&…

深入探讨Unity协程及其使用

深入探讨Unity协程及其使用 协程 协程在Unity中是个很重要的东东&#xff0c;相信很多人都使用过&#xff0c;它能够非常方便的进行异步等待操作&#xff0c;可以说&#xff0c;用好协程&#xff0c;可以使你的代码更加优雅&#xff0c;然而&#xff0c;如果用不好&#xff0…

Unity 协程、模拟协程

理解协程 IEnumeratoryield 强大的迭代器 IEnumerator 就是一个函数容器 里面保存了一个一个的函数 IEnumator会依次执行每个函数 而每个函数都有一个返回值 保存在IEnumator.Currect里面 看下面这个例子 IEnuermator start_Coroutine(){Debug.Log("HellWord")…

unity 协程特点

协程 一. Unity中使用协程1. 什么是协程2. 如何使用3. 协程的应用场景创建补间动画打字机效果异步加载资源 4. 注意事项 二. Unity协程的底层原理1. 协程本体&#xff1a;C#的迭代器函数2. 协程调度&#xff1a;MonoBehaviour生命周期中实现3. Unity协程的架构 三. 扩展Unity的…

Unity协程深入及实现

Unity协程深入 文章目录 Unity协程深入Unity协程简介Unity协程的用法协程的原理协程的缺陷自己实现协程参考 Unity协程简介 Unity中的协程能够允许我们将一个任务分散到多个帧中。注意&#xff1a;协程&#xff08;协同执行&#xff09;和多线程有本质区别。 协程不是线程&…