位置: 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 布局(垂直居中展示)(常用的几种布局格式)

  • 163免费邮箱注册版(163免费邮箱注册)(163免费邮箱)

    163免费邮箱注册版(163免费邮箱注册)(163免费邮箱)

  • windows7安装windowsxp(windows7系统安装xp)(windows7安装windows10失败)

    windows7安装windowsxp(windows7系统安装xp)(windows7安装windows10失败)

  • 青桔单车怎么扫码骑行(青桔单车怎么扫不到二维码)

    青桔单车怎么扫码骑行(青桔单车怎么扫不到二维码)

  • 苹果怎么设置四位数的锁屏密码(苹果怎么设置四个密码锁)

    苹果怎么设置四位数的锁屏密码(苹果怎么设置四个密码锁)

  • 计算机上的ac是什么键(计算机上的ac是干嘛的)

    计算机上的ac是什么键(计算机上的ac是干嘛的)

  • 候补以后还能抢票吗(候补购票后还能抢当天其他车的票吗)

    候补以后还能抢票吗(候补购票后还能抢当天其他车的票吗)

  • 闲鱼发信息红色感叹号(闲鱼发信息红色怎么回事)

    闲鱼发信息红色感叹号(闲鱼发信息红色怎么回事)

  • iphone11与华为p30拍照对比(iphone11和华为p40对比)

    iphone11与华为p30拍照对比(iphone11和华为p40对比)

  • 抖音取消关注别人对账号有影响吗(抖音取消关注别人)

    抖音取消关注别人对账号有影响吗(抖音取消关注别人)

  • 鼠标左右键功能怎么用(鼠标左右键功能混乱)

    鼠标左右键功能怎么用(鼠标左右键功能混乱)

  • 苹果美版无锁和国行的区别(苹果美版无锁和黑解怎么区分)

    苹果美版无锁和国行的区别(苹果美版无锁和黑解怎么区分)

  • 苹果不插卡的手机叫什么(苹果不插卡的手机)

    苹果不插卡的手机叫什么(苹果不插卡的手机)

  • ie设置在哪里(ie页面设置在哪里找?)

    ie设置在哪里(ie页面设置在哪里找?)

  • 电池医生能看电池寿命么(电池医生对手机有帮助吗)

    电池医生能看电池寿命么(电池医生对手机有帮助吗)

  • word中格式栏在哪(word中的格式工具栏)

    word中格式栏在哪(word中的格式工具栏)

  • 怎么看etc激活成功(如何查看etc激活成功)

    怎么看etc激活成功(如何查看etc激活成功)

  • 爱思助手修改定位打卡会被发现吗(爱思助手修改定位可以维持多久)

    爱思助手修改定位打卡会被发现吗(爱思助手修改定位可以维持多久)

  • 算法的时间复杂度取决于(算法的时间复杂度是指执行算法所需要的计算工作量)

    算法的时间复杂度取决于(算法的时间复杂度是指执行算法所需要的计算工作量)

  • 华为怎么看是不是翻新机(华为怎么看是不是超级快充)

    华为怎么看是不是翻新机(华为怎么看是不是超级快充)

  • 手机钉钉签到如何删除(钉钉手机端怎么签到)

    手机钉钉签到如何删除(钉钉手机端怎么签到)

  • iphone xsmax支持快速充电吗(iphone xs max支不支持快充)

    iphone xsmax支持快速充电吗(iphone xs max支不支持快充)

  • 迅雷如何切换账号(迅雷账号怎么换手机号)

    迅雷如何切换账号(迅雷账号怎么换手机号)

  •  苹果锁屏看不到时间了(苹果锁屏看不到微信消息内容怎么设置)

    苹果锁屏看不到时间了(苹果锁屏看不到微信消息内容怎么设置)

  • 求差函数是哪个符号(求差函数是哪个公式)

    求差函数是哪个符号(求差函数是哪个公式)

  • psimsvc.exe - psimsvc是什么进程 有什么用

    psimsvc.exe - psimsvc是什么进程 有什么用

  • win10任务栏颜色怎么改(win10任务栏颜色怎么调)

    win10任务栏颜色怎么改(win10任务栏颜色怎么调)

  • Informer时序模型(代码解析)(时序模型算法)

    Informer时序模型(代码解析)(时序模型算法)

  • vue项目安装使用element_UI(使用vue要安装什么软件)

    vue项目安装使用element_UI(使用vue要安装什么软件)

  • phpcms v9无法上传缩略图怎么办(php.ini上传限制)

    phpcms v9无法上传缩略图怎么办(php.ini上传限制)

  • 一般纳税人企业所得税多久申报一次
  • 企业法人如何网上实名认证
  • 会计账册丢失什么后果
  • 产品质量问题赔偿账务处理
  • 国际货物运输免征所得税
  • 社保漏缴1个月怎么补缴
  • 财务发票报销时限是多久
  • 海关入库成功下一步干嘛
  • 企业所得税年度申报
  • 印花税减半征收优惠政策2022
  • 企业股东分红所得税税率表
  • 机动车销售统一专票可以抵扣进项税额吗
  • 预缴增值税附加税怎么算
  • 非公司私营企业属于什么类型
  • 10万元以下免征教育费附加
  • 企业收到固定资产投资时应按什么入账
  • 奖励费收入是什么
  • 办公室房租计入什么科目
  • PHP:mb_substitute_character()的用法_mbstring函数
  • php中const
  • 是否亏损看什么
  • 跨年销货退回账务处理
  • msworks.exe - msworks是什么进程 有什么用
  • php读取opc
  • 装机电源怎么装
  • php开启pdo
  • php图片加文字水印
  • 入固定资产含税吗
  • jetson b01 a02
  • php 替换函数
  • 出租经营的开发产品应视为企业的
  • 双峰骆驼什么意思
  • yolov5怎么改进
  • 前端工程搭建
  • 尚硅谷百度贴吧
  • 基于VGGNet乳腺超声图像数据集分析
  • mysql php
  • 发票 技术服务
  • 税控服务费在电子税务局表一里怎么填写
  • 耕地里埋坟国家有什么规定
  • 贴现资产卖断会怎么样
  • 燃气管道安装费和暖气管道安装费两个的欠条怎么写
  • 如何在对公账户对账操作
  • 保险费支出是什么意思
  • python数据编程
  • 现金流量表中的现金流量包括哪些
  • mysql_assoc
  • 政府会计业务活动费用会计分录
  • 四种股利分配政策及适用情况
  • 企业营业税怎么征收
  • 查询不到shsh怎么回事
  • 付款退回怎么做账
  • 公司员工入职的心得体会
  • 原材料存货跌价准备
  • 发行股票手续费计入哪里
  • 企业注销后账目如何处理
  • 享受研发费用加计扣除需要什么条件
  • 实缴发票和月结发票知乎
  • 其他应付款在借方是代表公司欠人家钱吗
  • sqlmd5加密后解密
  • 解决Win7 x64安装解压版mysql 5.7.18 winx64出现服务无法启动问题
  • win7系统桌面图标不见了右键无反应
  • Windows Server 2008关闭闲置状态的IDE通道
  • ubuntu16.04lts
  • 无法识别的选项
  • windowsxp服务在哪里
  • macbook imessage
  • centos怎么编写c语言
  • Linux查看文件的大小
  • redeonsoftware更新
  • Win10 64位系统下QQ语音和QQ视频音量很小的两种解决方法
  • 在bootstrap中,有哪几种导航
  • python jieba用法
  • unity的vector3
  • android 蓝牙 驱动 适配 sdio rk
  • [置顶]星陨计划
  • 税务局验证码
  • 公司注册后多久要去税务局登记
  • 江西省税务局官网
  • 动态简报和工作总结
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设