当前位置:   article > 正文

vue使用json-server模拟get和post接口初探_json-server post

json-server post

安装:

npm install json-server -g

注:要提前准备好node环境哦~

准备mock数据:

新建一个db.json文件,这里我将它放在src/mock/下。

  1. {
  2. "hello": [
  3. {
  4. "name": "tom",
  5. "age": 18
  6. },
  7. {
  8. "name": "jack",
  9. "age": 19
  10. }
  11. ]
  12. }

启动:

在控制台里输入"json-server -h"可以查看json-server有哪些启动选项

json-server -h

根据上面的表在package.json的"scripts"下配置:

"mock": "json-server src/mock/db.json --port 3003"

比如上面表里写的--port是端口,我们这里写--port 3003即将端口设置为3003

在控制台输入"npm run mock"

npm run mock

点击"http://localhost:3003/hello"可以看到刚才写在db.json里面写的数据。

测试GET请求:

 get请求200,并且可以拿到数据。

  1. axios.get('http://localhost:3003/hello')
  2. .then((data) => {
  3. console.log(data)
  4. })

 

测试POST请求:

post请求500并且也拿不到数据:

  1. axios.post('http://localhost:3003/hello')
  2. .then((data) => {
  3. console.log(data)
  4. })

 

 经过查阅资料发现,json-server不支持post请求,解决方法如下:

为解决POST请求:

利用json-server的--middlewares配置项定制请求和响应。

新建一个名为middlewares.js的文件,我将它放在src/mock文件夹下:

  1. module.exports = (request, response, next) => {
  2. if (request.method === 'POST') {
  3. request.method = 'GET'
  4. request.query = request.body
  5. }
  6. // 处理ie8下的文件上传
  7. if ((request.headers['content-type'] || '').startsWith('multipart/form-data')) {
  8. response.header('content-type', 'text/html')
  9. }
  10. next()
  11. }

 在package.json的"scripts"下修改配置:

"mock": "json-server src/mock/db.json --port 3003 --middlewares src/mock/middlewares.js"

再次运行"npm run mock"可见post请求200并且能够正常获取数据:

写在最后:

这是一个很简单的实例,若想在实际项目中使用可以结合--routes配置项配置其他接口url;利用faker大量制作mock数据。

更多配置项使用参考:json-server 使用全攻略(一) - 简书

tips:使用“json-server --watch db.json”命令可以实时监测db.json的变化;如果没有 -- watch 命令,即使db.json已经发生了改变,重新发请求,仍然会返回原先的mock data,返回状态码304,认为没有变化。

 

 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/279993
推荐阅读
相关标签
  

闽ICP备14008679号