当前位置: 首页 > news >正文

Vue+mockjs+Axios 案例实践

Axios

Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequest。

Axios官网如下:

https://axios-http.com/zh/docs/intro

创建拦截器

创建Axios实例:

import axios, {type AxiosInstance} from "axios";const http:AxiosInstance = axios.create({baseURL:'http://www.demo.com/',timeout: 1000,headers: {'X-Custom-Header': 'foobar'}
}) 

创建请求拦截器

http.interceptors.request.use((config:InternalAxiosRequestConfig)=>{// 在发送请求之前做些什么console.log("http.interceptors.request:",config.data);return config;
},)

创建响应拦截器

//响应拦截器
http.interceptors.response.use((respon:AxiosResponse)=>{// 2xx 范围内的状态码都会触发该函数。// 对响应数据做点什么console.log("http.interceptors.response:",respon)return respon;
},(error:any)=>{// 超出 2xx 范围的状态码都会触发该函数。// 对响应错误做点什么console.log("http.interceptors.response error:",error)return Promise.reject(error);
})

Vue

页面中发送Post请求:

const loginDate = reactive({userName: '',passWord: '',
})const  handLogin =()=>{       //绑定在登录按钮的click属性上面post("/login",loginDate).then(()=>{console.log("handLogin sucess");},(e)=>{console.log("handLogin error",e);})
}

从控制台打印的log来看,我们的拦截器成功拦截了我们在表单中提交的post请求,以及超时的response返回。在http.ts的拦截器中,我们可以对所有的请求和响应进行处理。类似于登录以及其他具体的业务请求,我们就可以在具体的组件文件中用then 或 catch 进行处理。

MockJs

    • 拦截ajax请求,生成伪数据
    • 应用场景:在工作中,后端已经出接口文档,还没有实现数据
    • 由前端依照接口文档模拟伪数据,实现前端开发功能

中文文档:

https://mockjs.fenxianglu.cn/

安装

使用之前,首先安装MockJs:

pnpm install mock -D //只在开发版本进行安装

mock接口

Mock.mock( rurl, rtype, function( options ) )

记录用于生成响应数据的函数。当拦截到匹配 rurl 和 rtype 的 Ajax 请求时,函数 function(options) 将被执行,并把执行结果作为响应数据返回。

rurl:可选。

表示需要拦截的 URL,可以是 URL 字符串或 URL 正则。例如 //domain/list.json/、'/domian/list.json'。

rtype:可选。

表示需要拦截的 Ajax 请求类型。例如 GET、POST、PUT、DELETE 等。

function(options):可选。

表示用于生成响应数据的函数。

options

指向本次请求的 Ajax 选项集,含有 url、type 和 body 三个属性,参见 XMLHttpRequest 规范(opens new window)。

import Mock from "mockjs"Mock.setup({timeout:"200-600"   //模拟一个200ms到600ms的请求延迟
})//模拟登录接口
Mock.mock("http://www.demo.com/login","post",(options:any)=>{const {username,password} = JSON.parse(options.body);  //解构请求的数据if(username==="admin" && password=="123456"){return{code:200,message:"登录成功",data:{username:"admin",token:"mockToken"+username+password //记住登录状态,验证身份,存在本地,后端可以解密出用户名和密码}}}else{return{code:401,message:"用户名或密码有误",data:""}}
})

***记得在main.ts中引入mockJs才能生效


import "./mock"

产看log,完成整个从请求到返回成功的流程:

数据逻辑

http://www.dtcms.com/a/490541.html

相关文章:

  • http的发展历程
  • Python中使用HTTP 206状态码实现大文件下载的完整指南
  • AngularJS下 $http 上传文件
  • 如何弄死一个网站锡林郭勒盟建设工程造价管理网站
  • 【Node.js】为什么擅长处理 I/O 密集型应用?
  • 基于SpringBoot的无人机飞行管理系统
  • STM32的HardFault错误处理技巧
  • Tekever-固定翼无人机系统:模块化垂直起降、远程海上无人机、战术 ISR 无人机
  • Kafka Queue: 如何严格控制消息数量
  • 大兴建设网站wordpress 托管主机
  • 国外html响应式网站网站开发高级证
  • 苍穹外卖--04--Redis 缓存菜品信息、购物车
  • 大淘客网站如何做seowordpress o2o主题
  • 机器学习催化剂设计专题学习
  • (六)机器学习之图卷积网络
  • 告别刀耕火种:用 Makefile 自动化 C 语言项目编译
  • 【安卓开发】【Android】做一个简单的钢琴模拟器
  • C#控制反转
  • 【Java 开发日记】什么是线程池?它的工作原理?
  • 黄页网站数据来源wordpress 最新漏洞
  • 如何评价3D高斯泼溅(3DGS)技术为数字孪生与实时渲染带来的突破性进展?
  • 技术解析:如何将NX(UG)模型高效转换为3DXML格式
  • 阿里云智能建站网络类黄页
  • SAP MIR7 模拟过账没有这个按钮
  • Redis 分布式锁实战:解决马拉松报名并发冲突与 Lua 原子性优化
  • 光刻胶化学基础:聚合物分子量分布对分辨率的影响与控制,以及国内技术突破
  • Lua C API 中的注册表介绍
  • 广州做网站哪家公司最好wordpress html调用php
  • 神经网络之计算图
  • Hatch 故障排除指南