首先须要澄清一下,该篇文章并不是标题党。这里介绍须要实现的效果是让后台工做人员不须要前端改动网络请求基础地址的前提下,使用前端代码便于本地调试。javascript
很差意思这里说的可能有点绕了,待我给你简单的说明一下你就明白了。前端
咱们知道前端在对接后台的时候都有这么一个基础地址,全部的后台接口调用都是经过它:java
let _baseURL = 'http://api.xxx.develop.com'
const service = axios.create({ // 建立 axios 实例
baseURL: _baseURL, // api base_url
timeout: 120000 // 请求超时时间
})
复制代码
如今假设有这么一个场景:ios
后台和前端一块儿开发某个需求,前端童鞋比较勤(huo)劳(shao)已经开发完页面并将代码都部署到了公司的开发环境http://xxx.develop.com
上。web
此时后台小哥哥A
想找你对接接口,你会运行本地的前端项目,而后将配置中的_baseURL
改成同事A
的IP
地址(假设为10.0.17.231:1001
);json
但同事B
也开发完了想与你对接,你会怎么作?axios
“稍等一下哈,小张如今在和我对接”小程序
“要不你先本身用postman
自测一下你的接口?”微信小程序
好为南啊,前端童鞋想作到雨露均沾啊,怎么办...api
此时你多么但愿能把你的前端项目当成一个静态的页面,让后台小哥哥只要配置上本身的IP
地址就能够查看前端页面并进行本地调试,而再也不须要前端开启服务。
该篇文章就是针对以上这种状况提供一种简单的方案,若还有更优的解决方案请评论区留言,一块儿学习一下😊
Local Storage
将后台的IP
地址存储在其中;Local Storage
中是否有指定的IP
地址,如果有的话则使用该地址。这里我以使用axios
为例进行讲解,你的代码中可能存在这么一段东西:
// request.js
let _baseURL = 'http://api.xxx.develop.com'
const service = axios.create({ // 建立 axios 实例
baseURL: _baseURL, // api base_url
timeout: 120000, // 请求超时时间
headers: { 'Content-Type': 'application/json' }
})
...
复制代码
(request.js
是项目中的网络请求配置)
咱们只须要将baseURL
作一个简单的适配就能够了,
定义一个setBaseURL
的函数:
function setBaseURL () {
const webHost = localStorage.getItem('webHost') // 获取浏览器本地存储中Key为webHost那一项的值
if (location.origin === 'http://xxx.develop.com' && webHost) { // 判断当前的环境以及是否存在webHost
_baseURL = 'http://' + webHost // 将_baseURL从新赋值
}
return _baseURL
}
复制代码
而后使用它:
// request.js
let _baseURL = 'http://api.xxx.develop.com'
function setBaseURL () {...}
const service = axios.create({ // 建立 axios 实例
baseURL: setBaseURL(), // api base_url
timeout: 120000, // 请求超时时间
headers: { 'Content-Type': 'application/json' }
})
复制代码
这样项目在生成axios
实例的时候,就会判断你当前的环境(假设你只想要在开发环境上这样作),而后判断浏览器的LocalStorage
中有没有须要指定的IP
地址,从而返回新的_baseURL
。
作好了这层适配以后,前端就能够将项目build
以后放到服务器上,后台小哥哥要使用的时候作一些配置就能够了。
注 这里的webHost
字符串并不是为固定写法,你也能够写成apiHost
、host
等等字段,只要和后台约定好就能够咯。
后台小哥哥在使用的时候只须要在浏览器上配置一下就能够了。
假设前端项目放到的是http://xxx.develop.com
上
http://xxx.develop.com
,并打开控制台(window
快捷键F12
, Mac
快捷键option+command+i
);Application
下的Local Storage
;Local Storage
, 找到当前网址的那一项;Key
为webHost
, Value
为后台本地的IP
地址(包括端口号)的键值对。以下图:
注
webHost
的拼写;IP
地址必定要带上端口号Value
设置为空字符串, 或删除这一项,以下图检测是否配置成功只须要查看一下发送的网络请求的Request URL
是否已经改变就能够了。
仍是打开控制台,而后找到NetWork
那一项,筛选一下只查看XHR
的网络请求
假设原来应该请求的地址为http://api.xxx.develop.com
配置以后要请求的地址 10.0.17.231:1001
查看此时发起网络请求是否是你配置以后的地址便可。
该解决方案是前公司的前端大哥提供的,我只是将它写成文章分享给你们,在这里也要感谢前端大哥在职业道路上对个人帮助。
以为有帮助的小伙能够点个👍支持一下 😊
知识无价,支持原创
更多推荐: