位置: IT常识 - 正文

前端如何使用后端提供的接口拿数据,文件配置及详细使用(前端后端选择)

编辑:rootadmin
前端如何使用后端提供的接口拿数据,文件配置及详细使用

目录

一、封装本地存储操作模块

新建文件src\utils\storage.js封装操作token的方法

二、vuex处理用户登陆后的token值

新建文件:src\store\index.js

安装导入:npm install vuex

三、封装 axios 请求模块

下载导入:npm install axios

四、在main.js文件内全局注册store、axios

五、新建api文件夹,存放接口文件

六、在组件页面内调接口拿数据

接口使用例子1

1. 登录接口的使用(同注册),在页面导入接口

2. 通过async await 来拿到用户输入的值,根据返回结果进行判断返回相应提示

接口使用例子2

1. 通过接口获取数据进行渲染,这里把需要的接口解构出来

2. data定义需要渲染的数据(可与后端字段一致)

3. 在方法里面调用接口,把拿到的数据放到一个自己定义的数组里面list

4. 通过v-for渲染获取到的数据


一、封装本地存储操作模块新建文件src\utils\storage.js封装操作token的方法/* 存储数据 */export const setItem = (key, value) => { // 将数组、对象类型的数据转换为 JSON 格式字符串进行存储 if (typeof value === "object") { value = JSON.stringify(value); } window.localStorage.setItem(key, value);};/* 获取数据 */export const getItem = (key) => { const data = window.localStorage.getItem(key); try { return JSON.parse(data); } catch (err) { return data; }};/* 删除数据 */export const removeItem = (key) => { window.localStorage.removeItem(key);};二、vuex处理用户登陆后的token值新建文件:src\store\index.js安装导入:npm install vueximport Vue from "vue";import Vuex from "vuex";// 加载storage模块:获取token,存储tokenimport { getItem, setItem } from "@/utils/storage";Vue.use(Vuex);// 用户登陆后的token值const TOKEN_KEY = "X-Token";export default new Vuex.Store({ // 处理用户 Token,定义容器当中数据 state: { // 用户的登录状态信息,存储当前登录用户信息(token等数据) // 1. user: null // 2. user: JSON.parse(window.localStorage.getItem(TOKEN_KEY)) user: getItem(TOKEN_KEY), }, mutations: { setUser(state, data) { state.user = data; // 为了防止刷新丢失,我们需要把数据备份到本地存储 // window.localStorage.setItem(TOKEN_KEY, JSON.stringify(state.user)) setItem(TOKEN_KEY, state.user); }, }, actions: {}, modules: {},});三、封装 axios 请求模块下载导入:npm install axios// 封装 axios 请求模块import axios from "axios";import router from "@/router";// axios.create 方法创建一个axios的实例const request = axios.create({ baseURL: "/localhost", // 接口的基准路径,改成自己的项目基地址});// 请求拦截器:是否注入tokenrequest.interceptors.request.use( function (config) { return config; }, function (error) { return Promise.reject(error); });// store文件中vuex和localstorage对token进行处理之后响应拦截器中统一处理 token 过期// 处理流程:在axios拦截器中加入token刷新逻辑;用户token过期时,向服务器请求新的 token;旧token替换为新token;然后继续用户当前的请求// 响应拦截器request.interceptors.response.use( function (response) { return response; }, async function (error) { console.dir(error); if (error.response && error.response.status === 401) { // 校验是否有 refresh_token const user = store.state.user; if (!user || !user.refresh_token) { router.push("/login"); return; } // 如果有refresh_token,则请求获取新的 token try { const res = await axios({ method: "PUT", url: "/admin/waterMeter/login", // 改成自己的项目的登录地址 headers: { Authorization: `Bearer ${user.refresh_token}`, }, }); // 如果获取成功,则把新的 token 更新到容器中 console.log("刷新 token 成功", res); store.commit("setUser", { token: res.data.data.token, // 最新获取的可用 token refresh_token: user.refresh_token, // 还是原来的 refresh_token }); return request(error.config); } catch (err) { // 如果获取失败,直接跳转 登录页 console.log("请求刷线 token 失败", err); router.push("/login"); } } return Promise.reject(error); });export default request;四、在main.js文件内全局注册store、axiosimport Vue from "vue";import App from "./App.vue";import router from "./router"; // 路由对象import store from "./store"; // 管理用户tokenimport axios from "axios";... ...new Vue({ router, store, render: (h) => h(App),}).$mount("#app");五、新建api文件夹,存放接口文件// 存储接口封装,用户相关的请求模块import request from "@/utils/request.js";// export const login = (user) => {// return request({// url: '', // 接口地址// method: 'POST', 'GET', // 请求方式// // 如果参数通过请求体来发(post),用data是请求体参数// // 如果参数通过请求行来发(get),用params是路径参数// data: user// })// }// 用户登录export const login = (data) => { return request({ method: "POST", url: "/admin/login", data, });};// 需要携带 token 获取数据时,携带登陆成功后存储在本地的token值// 查询所有使用记录export const listRecord = () => { return request({ method: "GET", url: "/admin/record/listRecord", headers: { "X-Token": localStorage.getItem("X-Token"), }, });};// 携带params参数,也是手动输入的值export const others = (params) => { return request({ method: "GET", url: "/admin/others", params, });};六、在组件页面内调接口拿数据接口使用例子11. 登录接口的使用(同注册),在页面导入接口// 调用登录接口import { login } from '@/api/user'2. 通过async await 来拿到用户输入的值,根据返回结果进行判断返回相应提示async onSubmit (values) { // 手动输入提交的数据:登录、注册、修改密码等提交的值 let { mobile: vcPhone, password: vcLoginpassword } = values const { data } = await login({ vcPhone, vcLoginpassword, }) console.log(data); console.log("submit", values); if (data.code == "200") { this.$toast.success("登录成功"); this.$router.push({ name: "shouye" }); } else if (data.message == "没有注册,请先注册") { this.$toast.fail(data.message); } else if (data.message == "密码错误") { this.$toast(data.message); } else { this.$toast.fail('操作异常,请重试') } console.log("submit", values);},注意:mobile、password是用户在data里定义的值,这里需要将拿到的值赋给自己定义的。 或者把data里的值改成和后端字段相同,此时可简写。例如:let { vcPhone, vcLoginpassword } = valuesconst { data } = await login({ vcPhone, vcLoginpassword, })接口使用例子21. 通过接口获取数据进行渲染,这里把需要的接口解构出来import { listRecord } from '@/api/user'2. data定义需要渲染的数据(可与后端字段一致)data () { return { recordFrom: { vcReadid: "", vcReaddate: "", vcCurrremainmoney: "", }, list: [], // 存放所有使用记录数据 loading: false, finished: false, };},3. 在方法里面调用接口,把拿到的数据放到一个自己定义的数组里面listmethods: { async getAllusedRecord () { try { const { data } = await listRecord() this.list = data this.loading = false; // 加载状态结束 this.finished = true; // console.log(this.list); } catch (err) { this.$toast('获取使用记录失败') } },},4. 通过v-for渲染获取到的数据<ul v-for="item in list" :key="item.name" :title="item"> <li> 编号:{{ item.vcReadid }} 时间:{{ item.vcReaddate }} 金额:{{ item.vcCurrremainmoney }} </li></ul>
本文链接地址:https://www.jiuchutong.com/zhishi/289740.html 转载请保留说明!

上一篇:海獭妈妈和新生的幼崽,加利福尼亚州蒙特雷湾 (© Suzi Eszterhas/Minden Pictures)(海獭妈妈和新生儿的故事)

下一篇:常用的几种布局方式---Flex 布局(垂直居中展示)(常用的几种布局格式)

  • 为什么说互联网产品的盈利模式都是用户主动设计的?(为什么说互联网是自印刷术以来人类在存储)

    为什么说互联网产品的盈利模式都是用户主动设计的?(为什么说互联网是自印刷术以来人类在存储)

  • airpods2充电盒充满电的判断方法(airpods2充电盒充电要多久)

    airpods2充电盒充满电的判断方法(airpods2充电盒充电要多久)

  • 荣耀手机上面有个月亮怎么办(荣耀手机上面有个小手)

    荣耀手机上面有个月亮怎么办(荣耀手机上面有个小手)

  • 手机老是显示小程序调试信息(手机老是显示小屏怎么办)

    手机老是显示小程序调试信息(手机老是显示小屏怎么办)

  • 麒麟960和970差距大吗(麒麟960vs麒麟970)

    麒麟960和970差距大吗(麒麟960vs麒麟970)

  • keep电脑能用吗(keep有电脑板么)

    keep电脑能用吗(keep有电脑板么)

  • 微信怎么设置英文版(微信怎么设置英文提示)

    微信怎么设置英文版(微信怎么设置英文提示)

  • 微信怎么发图片和视频一起(微信怎么发图片配音乐)

    微信怎么发图片和视频一起(微信怎么发图片配音乐)

  • 蓝牙耳机声音太大但已经是最小值(蓝牙耳机声音太小怎么调大)

    蓝牙耳机声音太大但已经是最小值(蓝牙耳机声音太小怎么调大)

  • 华为nova7来电闪光灯怎么设置(华为nova7来电闪光灯怎么设置视频)

    华为nova7来电闪光灯怎么设置(华为nova7来电闪光灯怎么设置视频)

  • 小米9背面碎了怎么办(小米9背板碎了)

    小米9背面碎了怎么办(小米9背板碎了)

  • 小翼管家能绑定几个手机(小翼管家能绑定几个路由器)

    小翼管家能绑定几个手机(小翼管家能绑定几个路由器)

  • 小米10电池可以用多久(小米10电池可以换8035毫安电池吗)

    小米10电池可以用多久(小米10电池可以换8035毫安电池吗)

  • 国产操作系统能不能安装到目前的电脑(国产操作系统能打败微软吗)

    国产操作系统能不能安装到目前的电脑(国产操作系统能打败微软吗)

  • 荣耀v30手机卡槽在哪里(荣耀v30手机卡槽在哪里视频)

    荣耀v30手机卡槽在哪里(荣耀v30手机卡槽在哪里视频)

  • idc机房运维是什么(idc机房运营)

    idc机房运维是什么(idc机房运营)

  • 荣耀手机备忘录设置(荣耀手机备忘录在哪)

    荣耀手机备忘录设置(荣耀手机备忘录在哪)

  • 怎么改airpods(怎么改AirPods物主)

    怎么改airpods(怎么改AirPods物主)

  • 小米8se电池不耐用(小米8se电池寿命)

    小米8se电池不耐用(小米8se电池寿命)

  • 手机怎样连接监控(手机怎样连接监控录像机)

    手机怎样连接监控(手机怎样连接监控录像机)

  • voc指纹锁怎么进入管理模式(voc指纹锁怎么进入管理模式视频)

    voc指纹锁怎么进入管理模式(voc指纹锁怎么进入管理模式视频)

  • 手机勿扰模式怎么关(手机勿扰模式怎么开启)

    手机勿扰模式怎么关(手机勿扰模式怎么开启)

  • 爱奇艺我的视频怎么保存到手机(爱奇艺我的视频怎么下载)

    爱奇艺我的视频怎么保存到手机(爱奇艺我的视频怎么下载)

  • 微信群设置了免打扰为啥还会响(微信群设置了免打扰为什么还震动)

    微信群设置了免打扰为啥还会响(微信群设置了免打扰为什么还震动)

  • 智联招聘如何发布招聘信息(智联招聘如何发文件)

    智联招聘如何发布招聘信息(智联招聘如何发文件)

  • Linux系统中使用netcat命令的奇技淫巧(linuxnl)

    Linux系统中使用netcat命令的奇技淫巧(linuxnl)

  • Windows 7系统如何创建硬盘分区?(win7系统咋样)

    Windows 7系统如何创建硬盘分区?(win7系统咋样)

  • python 爬虫详细步骤(python爬虫详细教程)

    python 爬虫详细步骤(python爬虫详细教程)

  • 消防工程改造怎么做账务处理
  • 医疗费用收费票据
  • 农产品增值税加计扣除最新政策2021
  • 半成品怎么结转到成品
  • 城建税少申报了怎样罚款
  • 什么经营范围可以开电费发票
  • 支付宝支付高速公路发票怎么打印
  • 纳税人性质怎么改
  • 预授权撤销怎么撤销
  • 连锁药店总部的首营资料
  • 纳税人如何办理纳税申报流程
  • 应交税金应交增值税已交税金怎么结转
  • 贴现利息的计算题
  • 应入固定资产的已做费用,如何调账
  • 车辆生产企业目录
  • 总资产现金回收率是什么与什么平均余额的比
  • 纳税人和征税对象的区别
  • 企业每个月都要关账吗
  • 企业间借款利息怎么算
  • 预缴税款是开票金额的多少
  • 所得税 费用
  • 金融业营业税改增值税
  • 汇兑损失的原因
  • 计提工资与发放工资
  • 汇率的标价
  • 个人取得的股票转让所得暂不征收个人所得税
  • 业务招待费进项税额转出
  • 销售收入增加会导致哪些变动
  • 1697510660
  • centos 6.5安装教程
  • mac如何连接电脑
  • php glob
  • 住房公积金余额查询
  • Win11 Build 22449.1000 预览版发布(附更新修复已知问题汇总)
  • 支付给代理机构的手续费计入
  • mediacache是什么文件夹
  • thinkphp wherein
  • 停在花朵上,好像在认真的听同学们读课文修改病句
  • 开展党建系列活动
  • 企业所得税季度预缴是什么意思
  • redis主从复制如何保证不丢失数据
  • node-gyp版本
  • 蓝桥杯b组2020
  • 只有进项税没有销项税如何报税
  • 前端面试题目100及最佳答案
  • mongodb分片技术
  • mongodb备份策略
  • sqlcode错误码100
  • 小规模申请一般纳税人怎么申请
  • 跨年租金如何确权
  • "服务业"
  • 期末增值税结转后未交增值税有余额,对吗
  • 处置废品收入税率
  • 政府补助怎么判断总额法还是净额法
  • 金税盘抵增值税
  • 成本价和原价一样吗
  • 销售净利率的范围
  • 营业外支出有哪些费用
  • mysql的全文索引的用处
  • solaris命令
  • 图形工具的作用
  • linux jack
  • 电脑qq老是弹出fi
  • 苹果的mac怎么查
  • linux的newgrp
  • linux指令系统
  • css一般可以放在几个地方
  • jquery each return
  • js动态改变div内容
  • Node.js中的事件循环是什么
  • python爬虫工作内容
  • js中排序的函数
  • js左值
  • vr project
  • js正则 \w
  • 黑龙江税务局副局长
  • 江苏省国家税务局
  • 中心组学习的意义?
  • 理财持有时间
  • 浙江省电子税务局电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设