一、Vue配置两个接口请求地址
在Vue中,我们可以使用axios作为我们的网络请求库。配置请求地址时,我们可以考虑将请求地址放到一个常量文件中,在这个文件中定义我们的请求地址,对于不同的环境,我们可以对常量文件进行不同的配置。
在以下的示例代码中,我们定义了两个请求地址:
// dev.env.js module.exports = { NODE_ENV: '"development"', API_BASE_URL: '"http://dev.api.com"', IMAGE_BASE_URL: '"http://dev.img.com"' } // prod.env.js module.exports = { NODE_ENV: '"production"', API_BASE_URL: '"http://api.com"', IMAGE_BASE_URL: '"http://img.com"' } // request.js import axios from 'axios' // 此处的地址为上述环境中定义的请求地址 const apiBaseUrl = process.env.API_BASE_URL const imgBaseUrl = process.env.IMAGE_BASE_URL // 配置请求返回数据类型 axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8' // 以API请求为例 axios.interceptors.request.use( config => { // 在此处对config进行一些处理 config.url = apiBaseUrl + config.url return config }, error => { return Promise.reject(error) } ) // 以图片请求为例 axios.interceptors.request.use( config => { // 在此处对config进行一些处理 config.url = imgBaseUrl + config.url return config }, error => { return Promise.reject(error) } ) export default axios
在以上示例代码中,我们通过导入axios库来发送请求,在request.js中定义了两个请求地址:API_BASE_URL和IMAGE_BASE_URL。我们根据环境读取不同的请求地址,对请求地址进行适当的处理后,返回新的config对象。
二、根据用户需求指定接口请求地址
在实际开发中,我们需要根据用户需求灵活地指定请求地址。对于这种情况,我们可以将用户需要请求的地址作为参数传递到请求函数中,对其进行赋值。
以下是示例代码:
// request.js import axios from 'axios' // 请求返回数据类型 axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8' // 封装请求函数,并指定请求地址 export function post(url, data, baseUrl) { const config = { baseURL: baseUrl, // 如果传递了自定义的baseUrl直接使用,否则使用上述环境配置的baseUrl method: 'post', // 请求方法 url: url, // 请求地址 data: data // 请求参数 } return axios(config) }
在以上示例代码中,我们首先导入axios库,在post函数中可以接收3个参数:请求地址url、请求参数data以及自定义的baseUrl。然后,我们根据传入的参数创建对应的config对象,并最终返回axios发送的请求。
三、使用Vue插件管理请求地址
为了更好地对请求地址进行管理,我们可以考虑使用Vue插件来管理请求地址。以下是示例代码:
// request.js import axios from 'axios' // 请求返回数据类型 axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8' let apiBaseUrl, imgBaseUrl const apiInstall = function(Vue, options) { if (options.apiBaseUrl) { apiBaseUrl = options.apiBaseUrl axios.interceptors.request.use( config => { config.url = apiBaseUrl + config.url return config }, error => { return Promise.reject(error) } ) } } const imgInstall = function(Vue, options) { if (options.imgBaseUrl) { imgBaseUrl = options.imgBaseUrl axios.interceptors.request.use( config => { config.url = imgBaseUrl + config.url return config }, error => { return Promise.reject(error) } ) } } export default { apiInstall, imgInstall }
在以上示例代码中,我们定义了两个Vue插件:apiInstall和imgInstall,分别用于管理API请求地址和图片请求地址。在安装插件时,我们可以传递一个包含apiBaseUrl和imgBaseUrl的options对象,来指定自定义的请求地址。最后,我们导出一个默认对象,包含apiInstall和imgInstall两个方法,用于Vue.use方法安装插件。