用JSON-server模拟REST API(三) 进阶使用

前面演示了如何安装并运行 json server , 和使用第三方库真实化模拟数据 , 下面将展开更多的配置项和数据操作。

目录:

配置项

返回静态文件

移动设备访问

自定义路由

npm启动

数据过滤

属性值(Filter)

分割(Slice)

排序(Sort)

运算符(Operators)

全文检索(Full-text search)

关系图谱(Relationships)

作为中间件

上一篇 用JSON-server模拟REST API(二) 动态数据

上上一篇 用JSON-server模拟REST API(一) 安装运行

配置项

在安装好json server之后,通过 json-server -h 可以看到如下配置项:

json-server [options] <source>

Options:
--config, -c 指定 config 文件 [默认: "json-server.json"]
--port, -p 设置端口号 [default: 3000]
--host, -H 设置主机 [默认: "0.0.0.0"]
--watch, -w 监控文件 [boolean]
--routes, -r 指定路由文件
--static, -s 设置静态文件
--read-only, --ro 只允许 GET 请求 [boolean]
--no-cors, --nc 禁止跨域资源共享 [boolean]
--no-gzip, --ng 禁止GZIP [boolean]
--snapshots, -S 设置快照目录 [默认: "."]
--delay, -d 设置反馈延时 (ms)
--id, -i 设置数据的id属性 (e.g. _id) [默认: "id"]
--quiet, -q 不输出日志信息 [boolean]
--help, -h 显示帮助信息 [boolean]
--version, -v 显示版本号 [boolean] Examples:
bin db.json
bin file.js
bin http://example.com/db.json

既可以通过命令行方式单行配置,如

json-server db.js -p 3008 -d 500 -q -r ./routes.json

,也可以通过 json-server.json 文件进行配置后:

# /mock/json-server.json

{
"host": "0.0.0.0",
"port": "3008",
"watch": false,
"delay": 500,
"quiet": true,
"routes": "./routes.json"
}

运行

json-server db.js

返回静态文件

/mock 下建立 public 目录,即可直接访问其下的所有静态文件,包括但不限于js, css ,markdown 文件等。

地址栏输入 http://localhist:3008/readme.md 即可访问以下文件

# /mock/public/readme.md

# hello Mr DJ,这节奏不要停

移动设备访问

通过 json server 建立的rest api服务默认可以在局域网中通过WIFI访问接口。

windows下面通过 ipconfig 查找到电脑的局域网地址,mac设备是通过 ifconfig | grep "inet " | grep -v 127.0.0.1 查看。

比如我的电脑局域网ip是 192.168.0.6,在手机上访问 http://192.168.0.6:3008 即可。

自定义路由

可以通过自定义路由的形式,简化数据结构,或是建立高弹性的web api,例如

# /mock/routes.json

{
"/news/:id/show": "/news/:id",
"/topics/:id/show": "/news/:id", }

访问 /news/1/showtopics/1/show 均返回指定的 /news/1 内容。

** * 需要注意的是,路由必须以 / 开头**

npm启动

相比在终端中直接输入各种命令,我更喜欢利用 node scripts 来处理任务,在 /mock 下建立文件 package.json,

然后运行 npm run mock

# /mock/package.json

{
"scripts": {
"mock": "json-server db.js"
}
}

数据过滤

数据过滤是 json server 中非常强力的功能。通过url上简单的query字段,即可过滤出各种各样的数据。

示例数据源:

[
{
"id": 0,
"title": "元小总小把清保住影办历战资和总由",
"desc": "共先定制向向圆适者定书她规置斗平相。要广确但教金更前三响角面等以白。眼查何参提适",
"tag": "值集空",
"views": 3810,
"images": [
"http://dummyimage.com/200x100/79f2a5&text=别角置",
"http://dummyimage.com/200x100/f28279&text=收面几容受取",
"http://dummyimage.com/200x100/7993f2&text=做件"
]
},
{
"id": 1,
"title": "物器许条对越复术",
"desc": "方江周是府整头书生权部部条。始克识史但给又约同段十子按者感律备。关长厂平难山从合",
"tag": "分七眼术保",
"views": 4673,
"images": [
"http://dummyimage.com/200x100/79f2a5&text=别角置"
]
},
{
"id": 2,
"title": "但学却连质法计性想般最",
"desc": "以群亲它天即资几行位具回同务度。场养验快但部光天火金时内我。任提教毛办结论感看还",
"tag": "响六",
"views": 4131,
"images": [
"http://dummyimage.com/200x100/79f2a5&text=别角置",
"http://dummyimage.com/200x100/f28279&text=收面几容受取",
"http://dummyimage.com/200x100/7993f2&text=做件"
]
},
...
{
"id": 99,
"title": "则群起然线部其深我位价业红候院",
"desc": "为高值务须西生型住断况里听。志置开用她你然始查她响元还。照员给门次府此据它后支越",
"tag": "何你",
"views": 2952,
"images": [
"http://dummyimage.com/200x100/79f2a5&text=别角置"
]
}
]

属性值(Filter)

使用 . 操作对象属性值

// 获取图片数量为3,且标签字数为2的新闻

GET /news?images.length=3&tag.length=2

分割(Slice)

使用 _start_end 或者 _limit (response中会包含 X-Total-Count)

// 获取id=10开始的5篇新闻

GET /news?_start=10&_limit=5

// 获取id=20开始,id=35结束的新闻

GET /news?_start=20&_end=35

排序(Sort)

使用 _sort_order (默认使用升序(ASC))

// 按照浏览数量降序排列

GET /news?_sort=views&_order=DESC

运算符(Operators)

使用 _gte_lte 选取一个范围

// 选取浏览量在2000-2500之间的新闻

GET /news?views_gte=2000&views_lte=2500

使用 _ne 排除一个值

// 选择tag属性不是 "国际新闻" 的分类

GET /news?tag_ne=国际新闻

使用 _like 进行模糊查找 (支持正则表达式)

// 查找title中含有 "前端" 字样的新闻 

GET /news?title_like=前端

全文检索(Full-text search)

使用 q,在对象全部value中遍历查找包含指定值的数据

// 查找新闻全部字段包含 "强拆" 字样的数据

GET /news?q=强拆

关系图谱(Relationships)

获取包含下级资源的数据, 使用 _embed

GET /news?_embed=comments
GET /news/1?_embed=comments

获取包含上级资源的数据, 使用 _expand

GET /news?_expand=post
GET /news/1?_expand=post

作为中间件

除了独立作为rest api 服务器之外, json server 同样可以作为诸如 Express 之类框架的中间件使用,

具体API详见 json server模块

全文完

本文demo

用JSON-server模拟REST API(三) 进阶使用的更多相关文章

  1. 用JSON-server模拟REST API(二) 动态数据

    用JSON-server模拟REST API(二) 动态数据 上一篇演示了如何安装并运行 json server , 在这里将使用第三方库让模拟的数据更加丰满和实用. 目录: 使用动态数据 为什么选择 ...

  2. 用JSON-server模拟REST API(一) 安装运行

    用JSON-server模拟REST API(一) 安装运行 在开发过程中,前后端不论是否分离,接口多半是滞后于页面开发的.所以建立一个REST风格的API接口,给前端页面提供虚拟的数据,是非常有必要 ...

  3. 用JSON-server模拟REST API

    来源于: 用JSON-server模拟REST API(一) 安装运行 用JSON-server模拟REST API(二) 动态数据 用JSON-server模拟REST API(三) 进阶使用 在开 ...

  4. 使用json-server模拟REST API

    https://segmentfault.com/a/1190000005793257 在开发过程中,前后端不论是否分离,接口多半是滞后于页面开发的.所以建立一个REST风格的API接口,给前端页面提 ...

  5. Express4.x API (三):Response (译)

    Express4.x API 译文 系列文章 Express4.x API (一):application (译) -- 完成 Express4.x API (二):request (译) -- 完成 ...

  6. json:server 本地搭建

    做个记录, 第一步,我们新建一个文件夹. 第二步,打开文件夹,执行git,没有git可以下载一个.或者用命令行工具进入到这个文件夹! 第三步,初始化json  在git里执行npm init --ye ...

  7. 接口神器之 Json Server 详细指南

    简介 json-server 是一款小巧的接口模拟工具,一分钟内就能搭建一套 Restful 风格的 api,尤其适合前端接口测试使用. 只需指定一个 json 文件作为 api 的数据源即可,使用起 ...

  8. 模拟提交API数据Pyqt版

    其实这个模拟提交数据之前已经写过篇: Python requests模拟登录 因为现在在做的项目中需要一个debug请求调试API,用PHP的CURL写了一个,又因Pyqt更能直观灵活的显示请求的参数 ...

  9. SQL Server AlwaysON从入门到进阶(1)——何为AlwaysON?

    本文属于SQL Server AlwaysON从入门到进阶系列文章 本文原文出自Stairway to AlwaysOn系列文章.根据工作需要在学习过程中顺带翻译以供参考.系列文章包含: SQL Se ...

随机推荐

  1. [CareerCup] 8.5 Online Book Reader System 在线读书系统

    8.5 Design the data structures for an online book reader system. 这道题OOB的题让我们设计一个在线读书系统,还是没有任何提示,所以发挥 ...

  2. 坑死我啊,一个WPF Adorner使用注意事项

    1.见鬼了? 项目中遇到这样的要求,一个Button用一个Adorner装饰,这个Adorner上又有一个Button,如下面这样 此时,我们在点击小Button的时候只希望处理小Button的事件, ...

  3. iOS项目重构日记

    如何重构 首先,要对程序的一般架构烂熟于心,尤其是MVC,这是基本.还有就是分离存储和网络请求的逻辑. 对于一些常用的控件尽量分离复用,设置开关函数,适当的时候开启,不要的时候关闭,有必要的话还可以 ...

  4. C#基础之枚举

    1.认识Enum 以前一直以为Enum是值类型,在VS中查看Enum的定义时才发现它是一个抽象的类.但是这个类很奇怪,Enum继承了ValueType这个很熟悉的值类型基类,它是唯一一个继承自Valu ...

  5. 尝试EJB整合Mybatis部署时报错:获得带有类加载器MybatisUtil的ModuleClassLoader的反射信息出错,请问大神如何解决

    mybatis的配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configurati ...

  6. 第四十二课:基于CSS的动画引擎

    由于低版本浏览器不支持css3 animation,因此我们需要根据浏览器来选择不同的动画引擎.如果浏览器支持css3 animation,那么就使用此动画引擎,如果不支持,就使用javascript ...

  7. Linux CentOS6.5下编译安装MySQL 5.6.16【给力详细教程】

    一.编译安装MySQL前的准备工作 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-devel perl 安装cmake,从http://www.cmake ...

  8. 给java应用打包

    C:\dollapp\classes> jar -cvf C:\dollapp\deploy\dollapp.jar *.* 上面的jar命令会把 C:\dollapp\classes 下的 所 ...

  9. [转]DIV+CSS和TABLE的区别

    现在全国大大小小的网站都在搞一场技术“革命”,就是所谓“网站重构”说简单点就是DIV+CSS进行网站制作.用DIV+CSS代替传统的Table制作框架和美化页面.百度搜索优化 在重构之前,肯定要了解为 ...

  10. 【LightOJ 1422】Halloween Costumes(区间DP)

    题 题意 告诉我们每天要穿第几号衣服,规定可以套好多衣服,所以每天可以套上一件新的该号衣服,也可以脱掉一直到该号衣服在最外面.求最少需要几件衣服. 分析 DP,dp[i][j]表示第i天到第j天不脱第 ...