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

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

在开发过程中,前后端不论是否分离,接口多半是滞后于页面开发的。所以建立一个REST风格的API接口,给前端页面提供虚拟的数据,是非常有必要的。

对比过多种mock工具后,我最终选择了使用 json server 作为工具,因为它足够简单,写下少量数据,即可使用。也因为它足够强大,支持CORS和JSONP跨域请求,支持GET, POST, PUT, PATCH 和 DELETE 方法,更提供了一系列的查询方法,如limit,order等。下面我将详细介绍 json server 的使用。

目录:

安装

运行

通过命令行

使用package.json

操作数据

get

post

put

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

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

安装

首先你的电脑中需要安装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.jsonjson-server file.jsjson-server http://example.com/db.jsonhttps://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.getfecth({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 仓库地址

转载于:https://www.cnblogs.com/lewo/p/mock-json-server-install.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490434.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度 | 刘群:基于深度学习的自然语言处理,边界在哪里?

来源&#xff1a; AI科技评论 编辑 | Camel四大边界&#xff1a;数据边界、语义边界、符号边界和因果边界当前&#xff0c;深度学习之于自然语言处理&#xff0c;有其局限性。那么它所能起作用的边界在哪里呢&#xff1f;对此问题&#xff0c;我们应当深思。近日&#xff0c;在…

C++char转int和int转char

区别在于0还是-0 char转int&#xff1a;-0 int main(){char c 5;int n c - 0;cout << n << endl;return 0; } int转char:0 int main(){int n 5;char c n0;cout << c << endl;return 0; }

html border阴影效果_【开发小技巧】026—如何使用HTML和CSS创建浮动框阴影效果?...

英文 | https://www.geeksforgeeks.org/how-to-create-floating-box-effect-using-html-and-css/?refrp浮动框效果是自定义框阴影技术的经典示例。在这种技术中&#xff0c;我们无需使用CSS提供的box-shadow属性即可创建逼真的阴影效果。实现方法&#xff1a;在选择器之后使用…

php变量函数,回调函数

一,变量可以直接传递函数 <?php function demo($num , $n )//$n是个函数 {for($i0;$i<$num;$i){if($n($i)){echo $i."<br>";}} } function funcall($i) {return $i%20; } demo(100,"funcall"); 二, 使用call_user_func_array  <?php fu…

NLP这两年:15个预训练模型对比分析与剖析

来源 | 知乎前言在之前写过的《NLP的游戏规则从此改写&#xff1f;从word2vec, ELMo到BERT》一文中&#xff0c;介绍了从word2vec到ELMo再到BERT的发展路径。而在BERT出现之后的这大半年的时间里&#xff0c;模型预训练的方法又被Google、Facebook、微软、百度、OpenAI等极少数…

多余的读写端口什么时候会对程序造成影响_程序员需要了解的硬核知识之控制硬件...

应用和硬件的关系我们作为程序员一般很少直接操控硬件&#xff0c;我们一般通过 C、Java 等高级语言编写的程序起到间接控制硬件的作用。所以大家很少直接接触到硬件的指令&#xff0c;硬件的控制是由 Windows 操作系统 全权负责的。你一定猜到我要说什么了&#xff0c;没错&am…

直击2019WAIC丨李德毅:人工智能是脱离意识的工具,需要约束的是人类自己

转自 上观新闻中国工程院院士、中国人工智能学会理事长李德毅在2019世界人工智能大会“科学前沿”主论坛上表示&#xff0c;人工智能就是人类智能的体外延伸&#xff0c;可以脱离意识而存在&#xff0c;应该将其看作一种工具。李德毅认为&#xff0c;意识和智能相互之间有很多典…

matplotlib给坐标轴特定的位置加上文字

比如我想在横坐标0和1这两个位置分别用文字“y1”和“y2”代替&#xff0c;即实现以下这种效果&#xff1a; plt.xlim([-1, 2]) plt.xticks([0, 1], ["y1", "y2"])

K-Means ++ 算法

Kmeans算法的缺陷 • 聚类中心的个数K 需要事先给定&#xff0c;但在实际中这个 K 值的选定是非常难以估计的&#xff0c;很多时候&#xff0c;事先并不知道给定的数据集应该分成多少个类别才最合适• Kmeans需要人为地确定初始聚类中心&#xff0c;不同的初始聚类中心可能导致…

螺旋桨设计软件_我们又双叒叕获得一项国家软件著作权!

近日中建三局一公司深圳分公司岗厦天元花园项目“实时监测数据可视化与BIM集成展示平台(简称监测数据可视化集成展示平台)V1.0”荣获国家软件著作权该项成果由岗厦天元花园项目与哈尔滨工业大学深圳校区组成的科研团队共同完成该平台能收集钢结构塔冠的水平位移、应变、温度、风…

计算机界和数学界,也需要一个“希波克拉底誓言”

汉娜弗莱&#xff1a; “未来不会就这么来到我们眼前&#xff0c;我们一直在塑造它。”摄影&#xff1a;Paul Wilkinson | The Guardian来源 The Guardian翻译 刘勤编辑 魏潇一位学界的领军人物表示&#xff0c;数学家、工程师以及科学家们应通过一个计算机界的“希波克拉底…

matplotlib显示特殊符号(gamma,alpha,beta)

plt.title(r$\gamma$) plt.title(r$\alpha$) plt.title(r$\beta$)

WCF技术实现基于角色的访问控制

第一次写&#xff0c;小紧张&#xff01; 即将毕业了&#xff0c;现在将我毕业设计中用到的小的编程技术以及自己的一些理解分享出来&#xff0c;希望可以做点小贡献。 首先要感谢网上各路大神无私的分享&#xff0c;没有你们&#xff0c;就没有我的收获。 在大四之前&#xff…

double类型占几个字节_MongoDB 中的数据类型

1 JSON 与 BSONMongoDB 是文档数据库&#xff0c;什么是文档呢&#xff1f;如果你看了之前的文章相信你已经有些概念了&#xff0c;这里的文档不是指 Word、PDF 这样的文档&#xff0c;而是类似 JSON(JavaScript Object Notation) 的对象&#xff0c;由不同的键以及对应的值组成…

每天一个Linux命令(17)--whereis命令

whereis 命令只能用于程序名的搜索&#xff0c;而且只搜索二进制文件&#xff08;参数-b&#xff09;、man说明文件&#xff08;参数-m&#xff09;和源代码文件&#xff08;参数-s&#xff09;。如果省略参数&#xff0c;则返所有信息。 和find相比&#xff0c;whereis查找的速…

李德毅院士:未来交通——自动驾驶与智能网联

图片来源&#xff1a;华龙网转自&#xff1a;主线科技&#xff08;trunktech&#xff09;近日&#xff0c;中国国际智能产业博览会&#xff08;智博会&#xff09;在重庆召开。中国人工智能学会理事长李德毅院士在智博会“人工智能产业发展合作论坛”上&#xff0c;发表了主题为…

C++输入一个整数后接着输入字符串

当我们输入整数&#xff0c;按回车&#xff0c;实际上输入的是:整数和换行符号(\n)。cin把整数读进了&#xff0c;但是换行符号没有读&#xff0c;因此如果接下来输入字符串&#xff0c;即使用cin.getline&#xff0c;首先会读入\n。然后就直接结束了。 下面这个程序需要输入四…

elasticsearch 查看索引_ElasticSearch 索引基本操作

松哥原创的 Spring Boot 视频教程已经杀青&#xff0c;感兴趣的小伙伴戳这里-->Spring BootVue微人事视频教程ElasticSearch 系列第五篇&#xff0c;和大家聊一聊索引的基本操作&#xff0c;前四篇传送门&#xff1a;打算出一个 ElasticSearch 教程&#xff0c;谁赞成&#…

C++ istringstream重新绑定和处理另一个字符串

当我们用istringstream处理完一个字符串后&#xff0c;如果想接着处理另外一个字符串&#xff0c;要首先对该istringstream调用clear&#xff08;&#xff09;方法&#xff0c;才能接着绑定下一个字符串 看个例子&#xff1a; #include<iostream> #include<string&g…