前端先行模拟接口(mock+expres+json)

这篇具有很好参考价值的文章主要介绍了前端先行模拟接口(mock+expres+json)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

mock模拟数据:data/static.js

路由:index.js

服务器:server.js

yarn /node 启动服务器:yarn start

客户端:修改代理路径(修改设置后都要重启才生效)

示例

后端框架express构建服务器

前端发起请求

JSON

静态数据:res.status === 304

3xx - Redirection(重定向):附加操作已完成请求

301 Moved Permanently:永久重定向,搜索引擎会更新

302 Found:临时重定向,搜索引擎通常不会更新索引

A.cookie 失效 有 CORS 问题

B.代理服务器的目标地址请求的不对,config/index.js 配置的 proxy 的 target 

304 Not Modified:304资源缓存,可以使用本地缓存
 


Image · nuysoft/Mock Wiki · GitHub

适用于前端先行,api中有设置mock 

前端先行模拟接口(mock+expres+json),前端,开发,javascript,前端,vue.js

前端先行模拟接口(mock+expres+json),前端,开发,javascript,前端,vue.js

前端先行模拟接口(mock+expres+json),前端,开发,javascript,前端,vue.js

mock模拟数据:data/static.js

// 导入 Mock 模块
import Mock from 'mockjs'

// 获取 Random 对象
const Random = Mock.Random

// 生成随机 ID、邮箱、IP、城市、日期时间等数据
//Random.id() 再@id  等价于 直接使用  Random.id(),推荐用@id,简洁
Random.id()
Random.email()
Random.ip()
Random.city()
Random.datetime()
Random.now()
Random.cname()

// 手机号前缀列表
const phonePrefix = ['132', '135', '189']
//Math.random() 函数返回一个 0 到 1 之间的随机小数
//index索引值将被用来选择一个前缀。
const index = Math.floor(Math.random() * phonePrefix.length)
//随机的8位数字串
const phone = phonePrefix[index] + Mock.mock(/\d{8}/)

// 静态数据对象
const static_data = {
  // 登出模拟数据
  logout: {
    // 从[0, 200]中随机选择一个元素作为模拟数据
    "code|1": [0, 200],
    "data": null,
    "message|1": ["执行成功"]
  },
  // 登录模拟数据
  login: {
    "code": 1,
    "data": {
        "datas": [{
            "user": {
                "status": 1,
                "userid": "@id",
                "userName": Random.string('lower', 5),  // 随机小写字母用户名
                "createTime": "@datetime",  // 随机日期时间
                "modifyTime": "@now",  // 当前时间
                "leader|1": [true, false]  // 随机领导状态
            },
            "resources": null
        }]
    },
    "message": "执行成功"
  },
  // 用户信息模拟数据
  info: {
    "code": 1,
    "data": {
        "datas": [{
            "userid": "@id",
            "userName": Random.string('lower', 5),  // 随机小写字母用户名
            "realName": "@cname",  // 随机中文姓名
            "createTime": "@datetime",  // 随机日期时间
            "modifyTime": "@now",  // 当前时间
            // @id() 是 Mock.js 提供的一个占位符,用于生成一个随机的唯一标识符。与之前的 @id 不同,这里使用了括号,这表示它会生成一个新的唯一标识符,而不是使用同一个。
            "orgId": "@id()",  // 随机组织 ID
            "email": "@email",  // 随机邮箱
            "phone": phone,  // 随机手机号
            // true,生成的城市名会带有省份,例如:"广东省深圳市"
            "city": "@city(true)",  // 随机城市名
            "ip": "@ip",  // 随机 IP 地址
            "leader|1": [true, false]  // 随机领导状态
        }]
    },
    "message": "执行成功"
  }
}

// 生成模拟数据并导出
let loginMock = Mock.mock(static_data.login),
    logoutMock = Mock.mock(static_data.logout),
    infoMock = Mock.mock(static_data.info)

export {
  loginMock,
  logoutMock,
  infoMock
}

// 使用Mock.mock来生成模拟数据
const data = Mock.mock({
  code: 1,
  data: {
      pid: '@id',           // 生成随机的ID
      date: Random.now(),   // 生成当前时间
      'list|1-10': [{       // 生成1到10个对象的数组
          'id|+1': 1,        // 从1开始,递增生成id
          'valiue|+1': Random.increment()  // 使用Random.increment()生成递增的值
      }]
  },
  message: 'succ'         // 设置消息
})

const getItem = JSON.stringify(data, null, 4)

路由:index.js

import { loginMock, logoutMock, infoMock } from './data/static.js'
// 定义 user 函数,用于处理路由和请求
const user = function (app) {
    // 登录
    app.get('/api/user/login', (req, res) => {
        res.send(loginMock);
    });

    // 用户信息
    app.get('/api/user/info', (req, res) => {
        res.send(infoMock);
    });

    // 退出
    app.get('/api/user/logout', (req, res) => {
        res.send(logoutMock);
    });
};

export default user

服务器:server.js

node/express都可实现,express代码量更少

import express from 'express'
import bodyParser from 'body-parser'
// chalk加颜色的
import chalk from 'chalk'

// 创建一个Express应用程序实例
let app = express();
// 使用body-parser中间件解析urlencoded和json请求体
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

// 用户权限
import user from './user/index.js';
user(app);

// 首页
import home from './home/index.js';
home(app);

// 上传
import upload from './upload/index.js';
upload(app);


// 监听端口以便接受HTTP请求
// 启动监听
app.listen(5899, () => {
    console.log(chalk.blue('Express mock server listening on port 5899'));
});

yarn /node 启动服务器:yarn start

前端先行模拟接口(mock+expres+json),前端,开发,javascript,前端,vue.js

客户端:修改代理路径(修改设置后都要重启才生效)

前端先行模拟接口(mock+expres+json),前端,开发,javascript,前端,vue.js​​​​​​​

const configStatic = {
  title: '后台',  // 网站的标题
  icon: '//c/favicon.ico',  // 网站的图标路径
  publicPath: {
    development: '/',  // 开发环境的公共路径
    online: '//ment/',  // 在线环境的公共路径
    uat: '//jment/uat',  // UAT环境的公共路径(User Acceptance Testing”(用户验收测试))
    test: '//ent/test'  // 测试环境的公共路径
  },
  proxy: {
    '/api': {  // 代理规则,将以 /api 开头的请求转发到指定的目标地址
      target: 'http://localhost:5899',  // 代理的目标地址
      changeOrigin: true,  // 设置请求头中的 Origin 字段为目标地址,用于处理跨域
      //pathRewrite: {
      // '^/api': '/'  // 修改请求路径,将 /api 替换为空字符串
      //}
    }
  }
}

module.exports = configStatic

示例

后端框架express构建服务器

// 引入所需的模块和数据
import express from 'express';
import { applyConfMock } from './data/static.js';

const app = express();
const port = 3000; // Replace with your desired port number

// 处理 POST 请求
app.use(express.json());

app.post('/api/upload/applyconf', (req, res) => {
  const id = req.body.id; // Get the id from the request body
  const result = applyConfMock[id]; // Use the id to get the corresponding data
  res.send(result);
});

// 启动服务器
app.listen(port, () => {
  console.log(`Server is listening at http://localhost:${port}`);
});

前端发起请求

const id = 123; // Replace with the actual id value
const data = { id: id }; // Create an object with the id property

fetch('/api/upload/applyconf', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(result => {
  // Handle the response result
})
.catch(error => {
  // Handle errors
});

JSON

import Mock from 'mockjs'

// 定义模板
const template = {
    'list|1-10': [{}]
}

// 生成模拟数据,转换为 JSON Schema 格式的数据
// JSON Schema 来验证它是否符合预期的数据结构
const data = Mock.toJSONSchema(template)

// 测试日志
console.log(JSON.stringify(data, null, 4))

静态数据:res.status === 304

前端先行模拟接口(mock+expres+json),前端,开发,javascript,前端,vue.js

axios默认会处理304响应,不会返回304状态码的内容,而是直接使用之前的缓存数据。

3xx - Redirection(重定向):附加操作已完成请求

301 Moved Permanently:永久重定向,搜索引擎会更新

服务器返回此响应(对 GETHEAD 请求的响应)时,会自动将请求者转到新位置。

302 Found:临时重定向,搜索引擎通常不会更新索引

A.cookie 失效 有 CORS 问题

B.代理服务器的目标地址请求的不对,config/index.js 配置的 proxy 的 target 

//响应拦截器
if (error.response && error.response.status === 302) {
    if (window.location.host === 'expenseexternal.xx.cn') {
        window.location.href = 'https:///passport-cloud.xxx.cn/login?service=' + encodeURIComponent(window.location.href)
    } 
}

304 Not Modified:304资源缓存,可以使用本地缓存

表示客户端发送了一个带有条件的请求(通常If-Modified-SinceIf-None-Match文章来源地址https://www.toymoban.com/news/detail-637290.html

到了这里,关于前端先行模拟接口(mock+expres+json)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • postman-使用Postman的模拟服务来模拟(mock)后端数据,完成前端模拟API调用

    最近项目上比较忙,任务多时间紧,导致后端开发任务繁多,无法及时开发完毕,但是前端同学已经把对应功能开发完成,需要进行前后端联调来验证API及一些交互问题;这不能因为后端的进度来影响前端的工作完成情况,因此,Postman的mock数据功能就用了,确实好用。 Set

    2024年02月11日
    浏览(35)
  • Postman接口测试高阶——精通Mock Server模拟服务器的创建及使用等

    对于通过HTTP或HTTPS集成的任何系统,MockServer可用作: 1.模拟的配置为返回不同请求的特定响应 2.代理人记录并可选地修改请求和响应 3.都是代理人对于一些请求和一个模拟的对于同时的其他请求 当Mock Servers接收到一个请求时,它会将该请求与active进行匹配预期已经配置好的

    2024年02月19日
    浏览(33)
  • 微信小程序开发通过mock后台数据,如何使用mock模拟后台数据,以及在小程序中使用

    作为一名前端开发人员,应该有很多像我一样不会写后台接口,但是网上非常多的项目都是需要后台数据支持的,这个时候前端开发人员可能会犯愁,现在我给大家推荐一个网站,可以帮助我们简单模拟后代数据 1.首先,在该网址https://www.fastmock.site注册登录,然后点击添加项

    2024年02月11日
    浏览(44)
  • json-server 模拟接口数据

    json-server - npm [!IMPORTANT] Viewing alpha v1 documentation – usable but expect breaking changes. For stable version, see [here](https://github.com/typicode/json-server/tree/v0). Latest version: 1.0.0-alpha.21, last published: 6 days ago. Start using json-server in your project by running `npm i json-server`. There are 347 other projects in the npm regis

    2024年01月23日
    浏览(28)
  • Lottie--前端动画效果--UI输出json格式--lottie动画在JavaScript中使用

    Lottie一个适用于Web、Android、iOS、React Native和Window的移动库,它可以使用Bodymovin解析以json格式导出的Adobe After Effects动画,并再移动设备上进行本地渲染。 1.需要引入JavaScript文件,我使用的是cdn中的链接。这里直接上链接,按需取用。点这里 2.json格式的文件 我不是UI啊,我也

    2023年04月09日
    浏览(39)
  • 记录坑,接口不返回json突然返回前端页面html

    前端本地在调试页面,突然告诉我一个很久没动的好端端的接口突然返回值变成了html , 查遍了生产环境和测试环境同一个页面接口返回值都没问题, 问题只出在他本地环境 ,关键他连的是测试环境(数据正常)的接口, 前端让我排查接口,服务器配置,我考虑半天可能出现的

    2024年02月03日
    浏览(26)
  • 『前端必备』本地数据接口—json-server 详细介绍(入门篇)

    目录 前言  一、Node环境搭建 1-1 简介 1-2 Node.js环境搭建 1-2-1 下载 1-2-2 安装 1-2-3 验证 1-3 npm简介 二、json-server环境搭建 2-1 简介 2-2 安装 2-3 创建数据库 2-4 启动 ​编辑 2-5 查看 三、操作数据 3-1 查(get) 3-2 增(post) 3-3 删(delete) 3-4 改(put 和 patch) Ajax 是前端必学的一个知

    2024年02月05日
    浏览(32)
  • 测试先行:探索测试驱动开发的深层价值

    在软件开发的世界中,如何确保代码的质量和可维护性始终是一个核心议题。测试驱动开发(TDD)为此提供了一个答案。与传统的开发方法相比,TDD鼓励开发者从用户的角度出发,先定义期望的结果,再进行实际的开发。这种方法不仅可以确保代码满足预期的需求,还可以在

    2024年02月11日
    浏览(24)
  • 前端开发——Javascript知识(介绍)

    目录 有关JavaScript的知识  JavaScript的优点   JavaScript的领域 JavaScript的组成 JavaScript的特点 第一个JavaScript程序 在 HTML 文档中嵌入 JavaScript 代码 在脚本文件中编写 JavaScript 代码 JavaScript内容  Html内容  JavaScript 代码执行顺序 JavaScript中的几个重要概念 标识符 保留字 区分

    2024年02月01日
    浏览(37)
  • 前端开发——JavaScript的条件语句

      世界不仅有黑,又或者白 世界而是一道精致的灰  ——Lungcen     目录 条件判断语句 if 语句 if else 语句 if else if else 语句  switch语句 break case 子句 default语句 while循环语句 do while循环语句 for循环语句 for 循环中的三个表达式 for 循环嵌套 for 循环变体——for in for 循环

    2023年04月21日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包