json-server 模拟数据
转载于:https://www.cnblogs.com/itfantasy/p/6043111.html
使用json-server模拟REST API
https://segmentfault.com/a/1190000005793257
在开发过程中,前后端不论是否分离,接口多半是滞后于页面开发的。所以建立一个REST风格的API接口,给前端页面提供虚拟的数据,是非常有必要的。
对比过多种mock工具后,我最终选择了使用 json server
作为工具,因为它足够简单,写少量数据,即可使用。
也因为它足够强大,支持CORS和JSONP跨域请求,支持GET, POST, PUT, PATCH 和 DELETE 方法,更提供了一系列的查询方法,如limit,order等。下面我将详细介绍 json server
的使用。
安装
首先你的电脑中需要安装nodejs,建议使用最新版本。然后全局安装json server.
npm install json-server -g
使用linux和macOS的电脑需要加上sudo
sudo npm install json-server -g
安装完成后可以用 json-server -h
命令检查是否安装成功,成功后会出现
json-server [options] <source>选项:--config, -c Path to config file [默认值: "json-server.json"]--port, -p Set port [默认值: 3000]--host, -H Set host [默认值: "0.0.0.0"]--watch, -w Watch file(s) [布尔]--routes, -r Path to routes file--static, -s Set static files directory --read-only, --ro Allow only GET requests [布尔] --no-cors, --nc Disable Cross-Origin Resource Sharing [布尔] --no-gzip, --ng Disable GZIP Content-Encoding [布尔] --snapshots, -S Set snapshots directory [默认值: "."] --delay, -d Add delay to responses (ms) --id, -i Set database id property (e.g. _id) [默认值: "id"] --quiet, -q Suppress log messages from output [布尔] --help, -h 显示帮助信息 [布尔] --version, -v 显示版本号 [布尔] 示例: json-server db.json json-server file.js json-server http://example.com/db.json https://github.com/typicode/json-server
运行
安装完成后,可以在任一目录下建立一个 xxx.json
文件,例如在 mock/
文件夹下,建立一个 db.json
文件,并写入以下内容,并在 mock/
文件夹下执行 json-server db.json -p 3003
。
{"news":[{"id": 1, "title": "曹县宣布昨日晚间登日成功", "date": "2016-08-12", "likes": 55, "views": 100086 }, { "id": 2, "title": "长江流域首次发现海豚", "date": "2016-08-12", "likes": 505, "views": 9800 } ], "comments":[ { "id": 1, "news_id": 1, "data": [ { "id": 1, "content": "支持党中央决定" }, { "id": 2, "content": "抄写党章势在必行!" } ] } ] }
为了方便,再创建一个 package.json
文件,写入
{"scripts": {"mock": "json-server db.json --port 3003" } }
然后使用到 /mock
目录下执行 npm run mock
命令,如果成功会出现
> @ mock /你的电脑中mock文件夹所在目录的路径/mock
> json-server db.json -p 3003\{^_^}/ hi!Loading db.jsonDoneResourceshttp://localhost:3003/newshttp://localhost:3003/commentsHomehttp://localhost:3003
如果不成功请检查 db.json
文件的格式是否正确。
操作数据
GET
这个时候访问 http://localhost:3003/db
可以查看 db.json
文件中所定义的全部数据。
使用浏览器地址栏,jQuery.get
或 fecth({method: "get"})
访问 http://localhost:3003/news
,则可以看到 news
对象下的数据,以Array格式返回:
[{"id": 1,"title": "曹县宣布昨日晚间登日成功", "date": "2016-08-12", "likes": 55, "views": 100086 }, { "id": 2, "title": "长江流域首次发现海豚", "date": "2016-08-12", "likes": 505, "views": 9800 } ]
POST
以jquery的 $.ajax
方法举例,以下代码会实时的向 db.json
中的 news
对象push一条新的数据再次用 get
方式访问 http://localhost:3003/news
, 就可以看到它了
$.ajax({type: 'post', url: 'http://localhost:3003/news', data: { "id": 3, "title": "我是新加入的新闻", "date": "2016-08-12", "likes": 0, "views": 0 } } )
PUT
同样以jquery的 $.ajax
方法举例,以下代码会实时的对 db.json
中的 news
对象中 id=1
数据进行修改
$.ajax({type: 'put',url: 'http://localhost:3003/news/1',data: {"title": "曹县宣布昨日晚间登日失败", "date": "2016-08-12", "likes": 55, "views": 100086 } } ) // 结果 [ { "id": 1, "title": "曹县宣布昨日晚间登日失败", "date": "2016-08-12", "likes": 55, "views": 100086 } ]
PATCH 和 DELETE 使用方式同上,就不做演示了。
参考资料
json-server源码 : json-server
mockjs源码 : mockjs
demo : 示例代码
https://segmentfault.com/a/1190000005793320
使用动态数据
上一篇演示时,使用了 db.json
作为数据载体,虽然方便,但是如果需要大量的数据,则显得力不从心。
幸好 json server
可以通过js动态生成json格式数据,官方例子为生成1000组user数据:
# /mock/db.jsmodule.exports = function() { var data = { users: [] } // Create 1000 users for (var i = 0; i < 1000; i++) { data.users.push({ id: i, name: 'user' + i }) } return data }
/mock
下运行
json-server db.js -p 3003
我们访问 http://localhost:3003/news/
看到的数据是
[{"id": 0,"name": "user0"}, {"id": 1,"name": "user1"}, {"id": 2,"name": "user2"}, {"id": 3,"name": "user3"}, ... {"id": 999,"name": "user999"} ]
但是在开发环境中,name
这个属性应该是诸如 “李铁蛋”, “张艳华” 或者是 “Brenda Thomas”,
“Daniel Wilson” 这样接地气的名字,而不是 “user0”, “user1” 这样让人望而生畏的名字,对于用户的
年龄,性别,籍贯,也应该有比较合理的数据展示。
json-server 模拟数据相关推荐
- SQL server模拟数据实现稍复杂查询语句
目录 1 DISTINCT(不允许重复)的用法 2 BETWEEN(在某个范围内)的用法 3 IN(属于若干个孤立的值)的用法 4 NULL(空值)的用法 5 ORDER BY(排序)的用法 6 模糊 ...
- SQL server 模拟数据进行select基本查询
目录 1 命名规范 2 模拟生成数据 1 新建数据表 2 在数据表中,模拟生成80条数据 2 select查询 count函数 sum函数 avg函数 max函数 min函数 Select+case- ...
- 在SQL Server中将数据导出为XML和Json
BCP "SELECT DEPT_CODE,PARENTCODE FROM longshinewebhr.dbo.b01 where PARENTCODE like '10201%' FOR ...
- js json对象转字符串_Mock.js模拟数据实现前端独立开发
在后端接口尚未完成时, 前端开发人员只能请求静态文件的方式来模拟数据, 非常繁琐, 使用mockjs, 我们可以对ajax请求进行拦截, 随机生成各种各样的数据, 包括图片, 非常方便, 由于实在肝不 ...
- 没有json数据,自己造!mockjs的使用-模拟数据其实超级简单
虽然mockjs已经有好几年没有更新了,但是这个其实跟年限无关,因为它最终的目的是生成模拟json. 而且mockjs可以用于任何webpack项目中,也就是可以在已有的项目中添加mockjs.比如w ...
- Datatables——一款前端好用的表格插件,本地json模拟数据实现表格分页查询
在做管理后台功能时,经常需要用到表格展示数据,从数据库查询返回的数据,返回集合或数组到前台,然后前台将数据渲染成表格,方便直观展示数据,通常还需要结合分页.查询.排序.Datatables是一款符合上 ...
- mock模拟的数据能增删改查吗_如何在Vue中使用Mockjs模拟数据的增删查改
之前一直使用json-server在前端开发时,搭建本地数据接口测试,但有时又需要将做好的项目放于 github page上做项目演示.在本地时,json server很好使用,但一旦放在github ...
- 前端模拟数据的技术方案(二)
读取模拟服务器的静态数据,读取模拟服务器动态数据. 一.准备工作 1.参考文档 json-server官网 mockjs官网 2.安装包 # 安装json-server服务 npm install j ...
- JSON Server在快速开发过程中的使用
在开发过程中,接口多半是滞后于页面开发的.利用JSON Server快速搭建模拟返回REST风格的后台数据,保证前后端开发的分离.前后端开发只要设定好接口以及数据的定义,剩下的就可以各自开发,最后集成 ...
- 详解vue-element-admin 使用mock.js动态模拟数据
大家好,我是一条肥鲶鱼. 提示:胆小慎入 文章目录 大家好,我是一条肥鲶鱼. 前言 一.mock.js 1.为什么使用mock.js 2.mock-server.js的出现 二.使用步骤 1.开发环境 ...
最新文章
- 报错解决:RequestsDependencyWarning: urllib3 (1.24.3) or chardet (3.0.4) doesn't match a supported versio
- 【技术】交换机上如何对流量拦截
- 《解剖PetShop》系列之三
- 微服务实战——Spring Cloud 第四篇 将服务注册到Eureka Server上
- 项目思考001---近期这个电台购物项目的一点点思考
- 穷人怎么慢慢打破阶层?做到这2点,活出最真实的样子,别表演!
- Prototype两个常用监听器
- 北斗导航 | RAIM算法之奇偶矢量法(原理讲解,附代码链接:可用性判定)
- 使用傲梅分区软件删除U盘分区后U盘无法识别的解决方法
- php站长统计,CNZZ站长统计产生的警告处理办法
- Windows搭建SFTP文件服务器
- 程序人生 - 库克:苹果收取 30% 佣金很合理!
- 苹果开发者账号购买或续费支付表单填写全记录purchase form
- arm开发板与windows下的pjsip建立通话
- 线性结构-前缀和和差分
- CMMI 3级18个过程域
- 吞噬星空鸿蒙殿主,论《吞噬星空》是鸿蒙三部曲的最后一部!
- python将json文件转换为csv文件
- 新手学计算机所有视频教程,新手学电脑全套视频教程
- 【SSH】SSH自动断开连接的原因和解决办法|SSH保持长连接方法