axios是一款強大的基于Promise的HTTP請求庫,被廣泛應用于前端開發中。為了更好地使用axios,我們可以進行封裝來支持JSON和表單格式。下面我們來通過代碼來實現這個功能。
import axios from 'axios' // 配置默認的請求頭部信息 axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded' // 添加請求攔截器 axios.interceptors.request.use( function (config) { if (config.method === 'post') { // 如果是表單格式,則將請求數據做轉換處理 config.transformRequest = [function (data) { let str = '' for (let key in data) { if (data.hasOwnProperty(key)) { str += key + '=' + data[key] + '&' } } return str.slice(0, -1) }] } return config }, function (error) { return Promise.reject(error) } ) // 封裝POST方法 export function post (url, params, contentType = 'json') { // 根據contentType設置請求的Content-Type頭部信息 if (contentType === 'json') { axios.defaults.headers.post['Content-Type'] = 'application/json' } else if (contentType === 'form') { axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded' } return new Promise((resolve, reject) =>{ axios .post(url, params) .then((res) =>{ resolve(res.data) }) .catch((err) =>{ reject(err) }) }) }
在這段代碼中,我們通過攔截器來對表單格式做了轉換處理,同時封裝了POST方法來支持JSON和表單格式。使用這個封裝的POST方法時,可以通過contentType參數來指定請求的Content-Type類型,默認為JSON格式。
上一篇mysql何創建一個函數
下一篇css 警察模板下載