[vue] 使用vue开发过程你是怎么做接口管理的?

[vue] 使用vue开发过程你是怎么做接口管理的?

创建一个request.js用于封装axios,在 src/api/request,设置拦截器统一处理请求和相应。封装 axios:request.js:import axios from 'axios'
import {Message, Loading} from "element-ui"
import {getToken} from "@/utils/auth"function Index({...config}) {// create an axios instanceconst service = axios.create({/*headers: {'Cache-Control': 'no-cache'},*/baseURL: config.baseURL || process.env.VUE_APP_BASE_API, // url = base url + request url// withCredentials: true, // send cookies when cross-domain requeststimeout: 30000 // request timeout})// request interceptorservice.interceptors.request.use(config => {return config},error => {return Promise.reject(error)})// response interceptorservice.interceptors.response.use(response => {return response},error => {const {request = {}} = error;const {status, response} = request;error.status = statustry {error.res = JSON.parse(response)} catch (e) {console.warn(e)}return Promise.reject(error)})/*** 发起请求* @param method 请求方法* @param url 请求地址* @param params 要发送的数据* @param config 配置* @param axiosConfig Axios配置项* @returns {Promise<never>|Promise<AxiosResponse<T>>}*/const requestProcessor = (method, url, params, config, axiosConfig) => {const headers = {}const token = getToken().tokenif (token) {// let each request carry tokenheaders['Authorization'] = 'JWT ' + token}if (config.formData) {const fd = new FormData();for (let key in params) {fd.append(key, params[key])}params = fd}switch (method.toUpperCase()) {case 'GET':return service.get(url, {params,headers,...axiosConfig,})case 'POST':return service.post(url, params, {headers,...axiosConfig,})case 'DELETE':return service.delete(url, {params,headers,...axiosConfig,})case 'PUT':return service.put(url, params, {headers,...axiosConfig,})default:return Promise.reject(new Error(`${method} 方法无效,请用正确的请求方法`))}}this.service = async ({method, url, params, config = {}, axiosConfig = {}}) => {const {isLoading = true, isToast = true} = configlet loadingInstanceisLoading && (loadingInstance = Loading.service({fullscreen: true,background: 'transparent',text: '加载中...'}))try {const response = await requestProcessor(method, url, params, config, axiosConfig)// 此处可以再次拦截return response.data} catch (error) {isToast && Message.error(error.message)throw error} finally {isLoading && loadingInstance.close()}}
}export const {request} = new Index()
export default Index接口 listing.js:import Request from "@/api/request"const {service} = new Request()export default {userPostList({pageSize, page}) {return service({method: 'get',url: '/userpostlist/',params: {pageSize,page},config: {isLoading: false}})}
}在 Vue 组件中使用:import listing from "@/api/listing"export default {mounted() {this.getList()},methods: {getList() {this.isLoading = truelisting.userPostList({pageSize: this.pageSize,page: this.currentPage,}).then(data => {this.currentPage = parseInt(data.currentPage)this.total = data.totalthis.list = data.results}).finally(() => {this.isLoading = false})}}
}

个人简介

我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家一起讨论

主目录

与歌谣一起通关前端面试题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

金士顿 8G u盘 红色 量产记录

找了好多教程&#xff0c;只有这个成功了&#xff0c;记录下来 逻辑盘符 : H:\ 此分区容量: 7.1G 设备ID : VID 0951 PID 1642 设备序列号: 001CC0EC348CBBB170000294 设备版本 : PMAP 设备制造商: Kingston 设备型号 : DT 101 G2 当…

微信小程序点击跳转出现背景

解决办法&#xff1a; 1、在navigater标签上加上 hover-class“none” 2、在标签css样式中加上backgroud&#xff1a;none&#xff1b; 转载于:https://www.cnblogs.com/weiyunblogs/p/10304045.html

[vue] 如何引入scss?引入后如何使用?

[vue] 如何引入scss&#xff1f;引入后如何使用&#xff1f; 安装scss依赖包&#xff1a; npm install sass-loader --save-dev npm install node-sass --save-dev 在build文件夹下修改 webpack.base.conf.js 文件&#xff1a; 在 module 下的 rules 里添加配置&#xff0c;如…

支付宝手机网站支付 错误代码 insufficient-isv-permissions 错误原因: ISV权限不足

在集成支付宝 手机网站支付 时&#xff0c;明明已经签约了&#xff0c;调用却报错 错误代码 insufficient-isv-permissions 错误原因: ISV权限不足解决办法&#xff1a; 登录开放平台 -> 研发管理-> 我的应用-> 找到对应的应用 点查看-> 功能信息 将里面的手机…

[vue] vue和angular有什么区别呢?

[vue] vue和angular有什么区别呢&#xff1f; Vue.js - 多样化的 JavaScript 框架 作为一个跨平台的&#xff0c;高度进步的框架&#xff0c;Vue 成为了许多需要创建单页应用程序的开发人员的首选。在用于开发 Web 应用程序的典型 MVC 体系结构中&#xff0c;Vue 充当了 View…

HTML 禁止数字因被自动识别为手机号,而被添加拨号链接样式

现象 明明写的一串数字没加链接样式&#xff0c;而iPhone会自动把你这个文字加链接样式、并且点击这个数字还会自动拨号。 解决 在html头加入以下代码&#xff1a; <meta name"format-detection" content"telephoneno" /> telephoneno就禁止了把数字…

[vue] vue生命周期的作用是什么?

[vue] vue生命周期的作用是什么&#xff1f; 准确地控制数据流和其对DOM的影响个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

[vue] vue生命周期总共有几个阶段?

[vue] vue生命周期总共有几个阶段&#xff1f; beforeCreate&#xff1a;在 new 一个 vue 实例后&#xff0c;只有一些默认的生命周期钩子和默认事件&#xff0c;其他的东西都还没创建。created&#xff1a;data 和 methods 都已经被初始化好了。&#xff08;如果要调用 method…

(十九)hashlib模块

hashlib模块用于加密相关的操作&#xff0c;3.x里代替了md5模块和sha模块&#xff0c;主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 &#xff0c;MD5 算法 注意&#xff1a;md5和sha256算法都是单向加密&#xff0c;即明文加密为密文后&#xff0c;密文无法再解密回明文 适合…

[vue] 第一次加载页面时会触发哪几个钩子?

[vue] 第一次加载页面时会触发哪几个钩子&#xff1f; beforeCreate, created, beforeMount, mounted个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

Python贪婪算法

贪婪算法 每步均选择局部的最优解&#xff0c;重复此过程&#xff0c;最终即得到全局的最优解简而言之就是每步都采用最优解优点&#xff1a; 简单易行缺点&#xff1a; 并非在所有情况下都奏效经典的问题&#xff1a; 背包问题集合覆盖问题贪婪算法下的近似算法解决集合覆盖问…

[vue] DOM渲染在哪个周期中就已经完成了?

[vue] DOM渲染在哪个周期中就已经完成了&#xff1f; mounted生命周期个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

[vue] 说说你对SPA单页面的理解,它的优缺点分别是什么?

[vue] 说说你对SPA单页面的理解&#xff0c;它的优缺点分别是什么&#xff1f; 介绍&#xff1a;SPA应用就是一个web应用&#xff0c;可理解为&#xff1a;是一种只需要将单个页面加载到服务器之中的web应用程序。当浏览器向服务器发出第一个请求时&#xff0c;服务器会返回一…

UVA - 208 Firetruck(并查集+dfs)

题目&#xff1a; 给出一个结点d和一个无向图中所有的边&#xff0c;按字典序输出这个无向图中所有从1到d的路径。 思路&#xff1a; 1.看到紫书上的提示&#xff0c;如果不预先判断结点1是否能直接到达结点d&#xff0c;上来就直接dfs搜索的话会超时&#xff0c;于是就想到了用…

[vue] SPA单页面的实现方式有哪些?

[vue] SPA单页面的实现方式有哪些&#xff1f; 1.监听地址栏中hash变化驱动界面变化2.用pushsate记录浏览器的历史&#xff0c;驱动界面发送变化3.直接在界面用普通事件驱动界面变化它们都是遵循同一种原则&#xff1a;div 的显示与隐藏个人简介 我是歌谣&#xff0c;欢迎和大…

2019 CCPC-Wannafly Winter Camp Div2 Day1

补题进度 7/11 J 夺宝奇兵 范围较小&#xff0c;直接枚举靠多少票赢即可&#xff0c;不够的票从小到大买 #include<bits/stdc.h> #define ll long long const int maxn 1005; using namespace std; struct node {ll id,val;int pos; }p[maxn],P[maxn]; bool vis[maxn]; …

根据输入的日期计算周次和月份

需求&#xff1a; 1.根据输入的日期拆分成按周或按月显示 2.规定周的开始日期从星期一开始&#xff0c;星期日结束 3.不足7天的一周&#xff0c;如果小于2天&#xff0c;则合并到上周或下周&#xff1b;大于2天的则自成一周 代码&#xff1a; CREATE OR REPLACE PROCEDURE …

[vue] 写出多种定义组件模板的方法

[vue] 写出多种定义组件模板的方法 1、字符串 2、模板字面量 3、<script type"x-template"></script> 4、文件组件模板 5、inline-template个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大…

[vue] 如何实现一个虚拟DOM?说说你的思路

[vue] 如何实现一个虚拟DOM&#xff1f;说说你的思路 虚拟DOM本身是一个JavaScript对象模拟真实DOM &#xff0c;用对象的属性去描述一个DOM节点&#xff0c;最终也只是一个真实DOM的映射个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c;…

oracle 日期计算

--计算当前日期的上周时间段 select (trunc(sysdate-7,DD)-to_char(sysdate-7,D)1) as last_week_start_date,(trunc(sysdate-7,DD)-to_char(sysdate-7,D)7) as last_week_end_date from dual --根据年、月、周、星期计算日期 CREATE OR REPLACE FUNCTION get_date(y n…