【数据模拟】还在愁没有后端接口测试?快来使用json-server零编码实现强大的后端接口

简介: 【数据模拟】还在愁没有后端接口测试?快来使用json-server零编码实现强大的后端接口

前言

在写前端项目时,你是否会遇到以下情况:

  • 与后端进度不一致,急需接口测试项目功能
  • 压根没有后端接口,而自己又迫切需要模拟接口模拟数据进行测试

若你正需要一套强大的,能够符合你心意的模拟的后端数据接口,那么json-server将是你的不二之选

json-server介绍

使用json-server我们只需要提供一个json文件,或者写几行简单的js脚本就可以模拟出RESTful API的接口。

安装

使用npm全局安装:

npm install -g json-server

入门

创建JSON文件

创建一个db.json包含一些数据的文件:

{
    "posts": [
        {
            "id": 1,
            "title": "json-server",
            "author": "typicode"
        },
        {
            "id": 2,
            "title": "json-server2",
            "author": "typicode2"
        }
    ],
    "comments": [
        {
            "id": 1,
            "body": "some comment",
            "postId": 1
        },
        {
            "id": 2,
            "body": "some comment2",
            "postId": 2,
            "author": {
                "name": "typicode"
            }
        },
        {
            "id": 3,
            "body": "some comment3",
            "postId": 1
        }
    ],
    "profile": {
        "name": "typicode"
    }
}

JSON文件中一级的key值就是一个接口的名称,如上所示会生成三个接口:

  • /posts
  • /comments
  • /profile

key值对应的数组内就是该接口的数据。

同时在comments的数据中有一个postId字段(注意不是postsId)对应的是posts中的id,表示comments是与posts相关联的(类似于后端的表关联)

启动JSON server

控制台运行启动db.json

json-server --watch db.json

启动成功:

在这里插入图片描述

默认启动使用的端口号是3000,此时直接访问:http://localhost:3000/posts就会得到posts中的数据:

在这里插入图片描述

指定端口号

使用--port指定端口号为5000

json-server --watch db.json --port 5000

接口使用

对于 JSON server生成的接口,可以同时使用 POSTPUTPATCHDELETE 请求,对应的更改将自动安全地保存到 db.json文件中

简单使用

# 获取所有的posts信息
GET    /posts
 
# 获取id=1的posts信息
GET    /posts/1
# 或
GET    /posts/?id=1
 
# 添加posts信息,请求body中必须包含posts的属性数据,json-server自动保存。
POST   /posts
 
# 修改posts中id=1的数据,请求body中必须包含posts的属性数据
PUT    /posts/1
# 或
PUT       /posts/?id=1
# PATCH请求补丁式修改
PATCH  /posts/1
 
# 删除posts中id=1的信息
DELETE /posts/1
 

筛选

一级筛选

# 获取posts中title=json-server并且author=typicode的数据
GET /posts?title=json-server&author=typicode

使用 . 访问深层属性

# 获取comments中author.name=typicode的数据
GET /comments?author.name=typicode

在这里插入图片描述

使用判断条件

可以用的判断条件为:

  • _gte : 大于等于
  • _lte : 小于等于
  • _ne : 不等于
  • _like : 包含
# 查询posts中id不等于1的数据
GET /posts?id_ne=1

GET /posts?id_lte=1
GET /posts?title_like=server

连接表查询

# 查询posts中id=1对应的comments中的数据
GET /posts/1/comments

在这里插入图片描述

分页

_page: 第几页
_limit:一页多少条

GET /posts?_page=1
GET /posts?_page=2&_limit=1
  • 默认一页10条
  • 后台会返回总条数,总条数的数据在响应头:X-Total-Count

排序

_sort:排序的字段
_order:排序的方式:升序asc(默认),降序desc

# 根据id升序查询posts中数据
GET /posts?_sort=id&_order=asc
GET /posts/1/comments?_sort=votes&_order=asc

支持多个字段排序:

GET /posts?_sort=id,title&_order=desc,asc

_start:片开始的位置
_end_limit:片结束的位置

Array.slice完全一样工作(即_start具有包容性和_end排他性)

# 查询posts中下标0(包含下标0)到下标1(不包含下标1)之间的数据,即第1条
GET /posts?_start=0&_end=1
# 查询posts中id=1对应的comments中的数据的下标1到下标3之间的数据
GET /posts/1/comments?_start=1&_end=3

全文搜索

q:搜索内容

# 搜索posts中包含typicode2的数据
GET /posts?q=typicode2

关系

同时获取子资源

_embed:需要包含的子资源

GET /posts?_embed=comments

获取包含子资源comments中数据(根据comments中的postIdposts中的id相对应进行查询)的posts数据

posts对应的comments子资源会存放到postscomments字段中

在这里插入图片描述

GET /posts/1?_embed=comments

获取postsid=1并且包含其对应的子资源comments数据的数据
在这里插入图片描述

同时获取父资源

_expand:需要包含的父资源

GET /comments?_expand=post

在这里插入图片描述

GET /comments/1?_expand=post

在这里插入图片描述

获取或创建嵌套资源

GET  /posts/1/comments
POST /posts/1/comments
相关文章
|
2月前
|
JSON API 数据格式
淘宝拍立淘按图搜索API系列,json数据返回
淘宝拍立淘按图搜索API系列通过图像识别技术实现商品搜索功能,调用后返回的JSON数据包含商品标题、图片链接、价格、销量、相似度评分等核心字段,支持分页和详细商品信息展示。以下是该API接口返回的JSON数据示例及详细解析:
|
2月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
2月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
3月前
|
JSON 缓存 自然语言处理
多语言实时数据微店商品详情API:技术实现与JSON数据解析指南
通过以上技术实现与解析指南,开发者可高效构建支持多语言的实时商品详情系统,满足全球化电商场景需求。
|
2月前
|
JSON 中间件 Java
【GoGin】(3)Gin的数据渲染和中间件的使用:数据渲染、返回JSON、浅.JSON()源码、中间件、Next()方法
我们在正常注册中间件时,会打断原有的运行流程,但是你可以在中间件函数内部添加Next()方法,这样可以让原有的运行流程继续执行,当原有的运行流程结束后再回来执行中间件内部的内容。​ c.Writer.WriteHeaderNow()还会写入文本流中。可以看到使用next后,正常执行流程中并没有获得到中间件设置的值。接口还提供了一个可以修改ContentType的方法。判断了传入的状态码是否符合正确的状态码,并返回。在内部封装时,只是标注了不同的render类型。再看一下其他返回的类型;
170 3
|
2月前
|
JSON Java Go
【GoGin】(2)数据解析和绑定:结构体分析,包括JSON解析、form解析、URL解析,区分绑定的Bind方法
bind或bindXXX函数(后文中我们统一都叫bind函数)的作用就是将,以方便后续业务逻辑的处理。
272 3
|
3月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
3月前
|
JSON 自然语言处理 监控
淘宝关键词搜索与商品详情API接口(JSON数据返回)
通过商品ID(num_iid)获取商品全量信息,包括SKU规格、库存、促销活动、卖家信息、详情页HTML等。
|
3月前
|
JSON 自然语言处理 API
多语言实时数据淘宝商品评论API:技术实现与JSON数据解析指南
淘宝商品评论多语言实时采集需结合官方API与后处理技术实现。建议优先通过地域站点适配获取本地化评论,辅以机器翻译完成多语言转换。在合规前提下,企业可构建多语言评论数据库,支撑全球化市场分析与产品优化。
|
3月前
|
机器学习/深度学习 JSON API
干货,淘宝拍立淘按图搜索,淘宝API(json数据返回)
淘宝拍立淘按图搜索API接口基于深度学习与计算机视觉技术,通过解析用户上传的商品图片,在淘宝商品库中实现毫秒级相似商品匹配,并以JSON格式返回商品标题、图片链接、价格、销量、相似度评分等详细信息。