一、相对地址请求
在实际项目中使用相对请求地址的情况比较多。
1. 封装请求文件
下面是封装Axios请求文件request.ts
ts
import axios from 'axios'
const instance = axios.create({
baseURL: '/pjone-server',
timeout: 5000,
})
// 添加请求拦截器
instance.interceptors.request.use(config => {
// todo:请求拦截逻辑代码
return config
},
(error) => {
return Promise.reject(new Error(error))
},
)
// 添加响应拦截器
instance.interceptors.response.use(response => {
// todo:响应拦截逻辑
)
export default instance
2. 具体请求调用
javascript
import request from './request'
export const getRecordsNum = () => {
return request({
url: '/lifeColor/getRecordsNum',
})
}
3. 前端请求路径
通过上述配置,前端页面调用请求的路径为:
http://localhost:3000/pjone-server/lifeColor/getRecordsNum
4. 后端API接口
本地启动后端api为 http://localhost:1304/pjone-server/lifeColor/getRecordsNum
由于端口不同,这就导致跨域问题。这时就需要代理后端接口让前端能够调用到。
开发环境和生产环境的处理方式不同。
5. 开发环境代理
参考:入口 在vite.config.ts
文件中配置以下内容
ts
export default defineConfig({
server: {
proxy: {
'/pjone-server': {
target: 'http://127.0.0.1:1304/',
changeOrigin: true,
}
},
},
})
在开发环境中,Vite 使用 vite.config.js 中的 proxy 选项来配置代理,完成在开发服务器中的转发请求。
6. 生产环境代理
在 Vite 项目部署之后,proxy的配置内容不再起作用。这时就需要在部署项目的Nginx中进行设置。
nginx.conf配置内容如下:
conf
location /pjone-server {
proxy_pass http://127.0.0.1:1304/pjone-server;
}
二、 绝对地址请求
在封装Axios请求的baseURL中也可以使用绝对请求路径,例如:
ts
const instance = axios.create({
baseURL: 'http://127.0.0.1:3007/api',
timeout: 5000,
})
后端允许跨域
该后台是express项目,因为设置了允许跨域,所以直接路径访问是没问题的。
ini
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());