背景
vue項目如何請求后端api?
vue-cli腳手架生成的webpack標准模板項目
HTTP庫使用axios
一、開發環境跨域與API接口服務通信
整體思路:
- 開發環境API接口請求baseURL為本地http://localhost:8080
- 為本地請求配置代理,代理目標服務器設置為接口服務所在地址或域名
具體步驟如下:
1、config/dev.env.js文件中配置baseURL
module.exports = merge(prodEnv, { NODE_ENV: '"development"', BASE_API: '"http://localhost:8080"' //配置為本地地址才會訪問到本地虛擬的服務器,從而通過第1步中代理訪問API服務,避免跨域 })
2、axios配置baseURL
// 創建axios實例 const service = axios.create({ baseURL: process.env.BASE_API, // api的base_url timeout: 5000 // 請求超時時間 })
3、config/index.js文件中配置開發環境代理
module.exports = { dev: { // Paths assetsSubDirectory: 'static', assetsPublicPath: '/', proxyTable: { // 代理配置信息 '/taskinfo': { target: 'http://192.168.162.22:8381/taskinfo', // API服務所在IP及端口號 changeOrigin: true, // 如果設置為true,那么本地會虛擬一個服務器接收你的請求並代你發送該請求,這樣就不會有跨域問題(只適合開發環境) pathRewrite: { '^/taskinfo': '' // 重寫路徑 } } }, …… } }
二、生產環境配置API接口服務信息
生產環境直接指向API接口服務,使用IP或域名
1、config/dev.env.js文件中配置baseURL
'use strict' module.exports = { NODE_ENV: '"production"', BASE_API: '"http://192.168.162.22:8381/"' // API服務所在IP及端口,或域名 }
2、axios配置baseURL
同開發環境,無需重復配置
三、生產環境靜態文件獲取目錄(靜態文件獨立部署)
待續……