vue项目封装api接口事项

embedded/2025/1/13 2:13:36/

vue项目封装api准备

  • vue项目
    • vue项目目录对应的src文件夹

vue项目

本项目只提及一些修改的细节,如有错误,可在评论区指出交流。

vue项目目录对应的src文件夹

本章节针对src文件夹下操作:
封装api,需要先创建请求的request.js文件,其次再创建api文件夹,故
第一步:
在src文件夹下创建utils文件夹,这个文件夹放的文件很重要,可以说是封装的关键文件,就是request,js文件
这个request.js文件也是自定义创建的。【csdn上面有很多request.js文件里面的内容,可以参考】。

在这里插入图片描述
本人的request文件,也是在csdn上参考的:
详细内容如下:

javascript">import axios from 'axios';axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8';
// 创建axios实例
const service = axios.create({// axios中请求配置有baseURL选项,表示请求URL公共部分baseURL: '/dev-api',// 超时timeout: 10000,
});// request拦截器
service.interceptors.request.use((config) => {return config;},(error) => {console.log('Request error: ', error);Promise.reject(error);}
);// 响应拦截器
service.interceptors.response.use((res) => {// 未设置状态码则默认成功状态const code = res.status || 200;// 二进制数据则直接返回if (res.status === code) {return res;} else {console.error('Request error: ', res);return Promise.reject(new Error('Error with status code ' + res.status));}},(error) => {console.log('err' + error);let { message } = error;if (message == 'Network Error') {message = '后端接口连接异常';} else if (message.includes('timeout')) {message = '系统接口请求超时';} else if (message.includes('Request failed with status code')) {message = '系统接口' + message.substr(message.length - 3) + '异常';}return Promise.reject(error);}
);
export default service;

第二步:
在src文件夹下创建api文件夹,并在api文件夹下创建你用到的api文件,
我们前端vue项目的接口api文件,都是js文件,所以公共接口应该是js文件
在这里插入图片描述
如图所示,api名字你自己随便取,后面我会以我取的这个名字为例。

javascript">import request from '@/utils/request';export function findByLikes(data) {return request({url: '/findByLikes',method: 'get',data: data,});
}export function findByTime(data) {return request({url: '/findByTime',method: 'get',data: data,});
}export function findByRand(data) {return request({url: '/findByRand',method: 'get',data: data,});
}

api导入request.js文件,两者建立联系: 【不要掉任何符号,尤其是:@】

javascript">import request from '@/utils/request';

第三步:
在根目录下创建两个文件(注意是根目录

.env.development
.env.production
如图:
在这里插入图片描述

这两个似乎是分辨开发环境与生产环境的,具体怎么调用我们应该也用不着:
两个文件内容很相似:

.env.development文件内容:

# 页面标题
VUE_APP_TITLE = '测试环境项目'#环境信息
ENV = 'development'#配置代理info
VUE_APP_BASE_API = '/dev-api'# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true

.env.production文件内容:

# 页面标题
VUE_APP_TITLE = '测试环境项目'#环境信息
ENV = 'production'#配置代理info
VUE_APP_BASE_API = '/prod-api'# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true

VUE_APP_BASE_API 似有不同,都在vue.config.js文件里面调用

第四步:
最后再看vue.config.js文件,
我网上找了好多博客,没找到一个完整的vue.config.js文件跟request.js以及api联系的,大佬都懒得整合,可能他们是觉得太简单了。

javascript">const { defineConfig } = require('@vue/cli-service');const port = process.env.port || process.env.npm_config_port || 8084; // 端口module.exports = defineConfig({transpileDependencies: true,devServer: {host: '0.0.0.0',port: port, // 此处修改你想要的端口号open: true,proxy: {// detail: https://cli.vuejs.org/config/#devserver-proxy[process.env.VUE_APP_BASE_API]: {target: `http://localhost:8087`,changeOrigin: true,pathRewrite: {['^' + process.env.VUE_APP_BASE_API]: '',},},},// disableHostCheck: true,},
});

先说8084 ,devServer里面的这个port你随便写任意,你写多少,浏览器的地址栏就会展示这个数字。相当于代理ip
在这里插入图片描述
代理的就是下面proxy 里面的那个target,8087才是后端项目,如下图:
下图是后端项目的连接数据库的文件,
在这里插入图片描述
里面的那个server.port 8087 ,就是上面vue.config.js文件里面的 target: http://localhost:8087,
这两个端口才是对应的,
至于那个8084,就是一个暴露的浏览器端口,后端请求,默认还是使用的8087这个端口。
这些改完之后,应该就没问题了

还有一个点就是:

javascript">  devServer: {host: '0.0.0.0',port: port, // 此处修改你想要的端口号open: true,proxy: {// detail: https://cli.vuejs.org/config/#devserver-proxy[process.env.VUE_APP_BASE_API]: {target: `http://localhost:8087`,changeOrigin: true,pathRewrite: {['^' + process.env.VUE_APP_BASE_API]: '',},},},

process.env.VUE_APP_BASE_API的VUE_APP_BASE_API是如何根据生产环境或者开发环境切换的?有大佬知道的可以评论区说一下,如果有对这个属性详细讲解生产与开发切换的博文,也可以在评论区发链接告知一下。大家互相学习,互相进步


http://www.ppmy.cn/embedded/153433.html

相关文章

MAX3232芯片介绍

MAX3232 是一个常用的 串口电平转换芯片,通常用于 RS-232串口通信 中。它的主要作用是将 RS-232 的 电平信号 转换为 TTL电平信号,使其能够与微控制器(如Arduino、STM32、Raspberry Pi等)等设备兼容。 为什么需要 MAX3232&#x…

在php中,Fiber、Swoole、Swow这3个协程都是如何并行运行的?

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…

快速实现一个快递物流管理系统:实时更新与状态追踪

物流管理是电商、仓储和配送等行业的重要组成部分。随着电子商务的快速发展,快递物流的高效管理和实时状态更新变得尤为关键。本文将演示如何使用Node.js、Express、MongoDB等技术快速构建一个简单的快递物流管理系统,该系统支持快递订单的实时更新和追踪…

软考信安19~操作系统安全保护

1、操作系统安全概述 1.1、操作系统安全概念 操作系统的安全是指满足安全策略要求,具有相应的安全机制及安全功能,符合特定的安全标准,在一定约束条件下,能够抵御常见的网络安全威胁,保障自身的安全运行及资源安全。 《信息安全技术操作系统安全技术要求(GB/T 20272—2…

element ui前端小数计算精度丢失的问题如何解决?

文章目录 前言一、什么是精度丢失?产生精度丢失的原因如何避免或减少精度丢失的影响 二、实际项目开发实例举例以项目预算模块为例如何解决精度丢失 总结 前言 在《工程投标项目管理系统》项目开发中工程项目预算、成本管理、财务管理等模块的开发中不可避免的要和…

C++中的语句

文章目录 简单语句符合语句(块)switch语句break内部变量定义 while语句for语句do while语句goto语句try块和异常处理使用预处理器进行调试 简单语句 C中,大多数语句以分号结束。程序语句最简单的形式是空语句(只有一个单独的分号…

Python Matplotlib 教程-Matplotlib 如何绘制常见图表

Python Matplotlib 如何绘制常见图表 Matplotlib 是 Python 中最流行的数据可视化库之一,提供了多种方式绘制各种图表,如折线图、柱状图、散点图、饼图等。本篇文章将从基础入门开始,逐步介绍如何使用 Matplotlib 绘制这些常见图表&#xff…

激活函数的实践选择

https://zhuanlan.zhihu.com/p/460177194https://zhuanlan.zhihu.com/p/460177194