转载于: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 模拟数据相关推荐

  1. SQL server模拟数据实现稍复杂查询语句

    目录 1 DISTINCT(不允许重复)的用法 2 BETWEEN(在某个范围内)的用法 3 IN(属于若干个孤立的值)的用法 4 NULL(空值)的用法 5 ORDER BY(排序)的用法 6 模糊 ...

  2. SQL server 模拟数据进行select基本查询

    目录 1 命名规范 2 模拟生成数据 1 新建数据表 2 在数据表中,模拟生成80条数据 2 select查询 count函数 sum函数 avg函数 max函数 min函数 Select+case- ...

  3. 在SQL Server中将数据导出为XML和Json

    BCP "SELECT DEPT_CODE,PARENTCODE FROM longshinewebhr.dbo.b01 where PARENTCODE like '10201%' FOR ...

  4. js json对象转字符串_Mock.js模拟数据实现前端独立开发

    在后端接口尚未完成时, 前端开发人员只能请求静态文件的方式来模拟数据, 非常繁琐, 使用mockjs, 我们可以对ajax请求进行拦截, 随机生成各种各样的数据, 包括图片, 非常方便, 由于实在肝不 ...

  5. 没有json数据,自己造!mockjs的使用-模拟数据其实超级简单

    虽然mockjs已经有好几年没有更新了,但是这个其实跟年限无关,因为它最终的目的是生成模拟json. 而且mockjs可以用于任何webpack项目中,也就是可以在已有的项目中添加mockjs.比如w ...

  6. Datatables——一款前端好用的表格插件,本地json模拟数据实现表格分页查询

    在做管理后台功能时,经常需要用到表格展示数据,从数据库查询返回的数据,返回集合或数组到前台,然后前台将数据渲染成表格,方便直观展示数据,通常还需要结合分页.查询.排序.Datatables是一款符合上 ...

  7. mock模拟的数据能增删改查吗_如何在Vue中使用Mockjs模拟数据的增删查改

    之前一直使用json-server在前端开发时,搭建本地数据接口测试,但有时又需要将做好的项目放于 github page上做项目演示.在本地时,json server很好使用,但一旦放在github ...

  8. 前端模拟数据的技术方案(二)

    读取模拟服务器的静态数据,读取模拟服务器动态数据. 一.准备工作 1.参考文档 json-server官网 mockjs官网 2.安装包 # 安装json-server服务 npm install j ...

  9. JSON Server在快速开发过程中的使用

    在开发过程中,接口多半是滞后于页面开发的.利用JSON Server快速搭建模拟返回REST风格的后台数据,保证前后端开发的分离.前后端开发只要设定好接口以及数据的定义,剩下的就可以各自开发,最后集成 ...

  10. 详解vue-element-admin 使用mock.js动态模拟数据

    大家好,我是一条肥鲶鱼. 提示:胆小慎入 文章目录 大家好,我是一条肥鲶鱼. 前言 一.mock.js 1.为什么使用mock.js 2.mock-server.js的出现 二.使用步骤 1.开发环境 ...

最新文章

  1. 报错解决:RequestsDependencyWarning: urllib3 (1.24.3) or chardet (3.0.4) doesn't match a supported versio
  2. 【技术】交换机上如何对流量拦截
  3. 《解剖PetShop》系列之三
  4. 微服务实战——Spring Cloud 第四篇 将服务注册到Eureka Server上
  5. 项目思考001---近期这个电台购物项目的一点点思考
  6. 穷人怎么慢慢打破阶层?做到这2点,活出最真实的样子,别表演!
  7. Prototype两个常用监听器
  8. 北斗导航 | RAIM算法之奇偶矢量法(原理讲解,附代码链接:可用性判定)
  9. 使用傲梅分区软件删除U盘分区后U盘无法识别的解决方法
  10. php站长统计,CNZZ站长统计产生的警告处理办法
  11. Windows搭建SFTP文件服务器
  12. 程序人生 - 库克:苹果收取 30% 佣金很合理!
  13. 苹果开发者账号购买或续费支付表单填写全记录purchase form
  14. arm开发板与windows下的pjsip建立通话
  15. 线性结构-前缀和和差分
  16. CMMI 3级18个过程域
  17. 吞噬星空鸿蒙殿主,论《吞噬星空》是鸿蒙三部曲的最后一部!
  18. python将json文件转换为csv文件
  19. 新手学计算机所有视频教程,新手学电脑全套视频教程
  20. 【SSH】SSH自动断开连接的原因和解决办法|SSH保持长连接方法

热门文章

  1. Mac上最强大好用的的右键工具「iRightMouse 超级右键」(上)
  2. 家用千兆路由器排行榜前十名_路由器哪个牌子好?千兆路由器2019排行
  3. 词云图,词频图,专门统计某些关键词的词云词频
  4. c语言中各个符号的含义总结,C语言中的符号总结
  5. 腾讯产品能力框架之通用能力篇(一)学习能力
  6. mac系统 查找英文目录
  7. DNS各地延迟排行榜
  8. 线性代数——线性方程组和矩阵(Linear and Matrices)
  9. 如何根据音频转文字自动给视频加字幕
  10. 服务器部署与配置文件,服务器部署与服务器迁移之配置文件篇.pptx