在使用Vue時,你可能會需要使用axios進行數據請求,而axios默認情況下是將數據以JSON格式發布的。但如果你需要以application/x-www-form-urlencoded(表單數據)的方式發送數據請求時,就需要引入qs這個庫。
qs是一個將查詢字符串序列化/反序列化的庫,它可以將JSON轉換成表單數據,也可以將表單數據轉換成JSON。可以使用npm進行安裝:npm install qs。
在Vue項目中引入qs:
import qs from 'qs'
我們現在來看一下如何使用qs將數據序列化成表單數據。
axios.post('/api/login', qs.stringify({username: 'admin', password: '123456'})) .then(res=>{ console.log(res) }) .catch(err=>{ console.log(err) })
在發送數據請求時,我們可以將數據對象作為qs.stringify()方法的參數,這個方法將數據對象轉換成表單數據,然后將數據以application/x-www-form-urlencoded的方式發布請求。數據請求完畢后,我們可以通過.then()獲取返回的數據或者通過.catch()獲取錯誤信息。
除了在post請求中使用qs,我們還可以在get請求中使用qs,在axios.get()請求時,將需要傳遞的參數對象作為qs.stringify()方法的參數傳遞即可。
axios.get('/api/user',{ params: qs.stringify({page: 1, size: 10}) }) .then(res=>{ console.log(res) }) .catch(err=>{ console.log(err) })
此時,我們的請求鏈接會變成/api/user?page=1&size=10。
另外需要注意的是,如果我們沒有引用qs,而直接在axios發送請求的時候將數據對象作為參數傳入,那么axios會自動將其轉換為JSON格式發送請求。
如果我們要將從服務器獲取到的表單數據轉換成JSON格式,可以使用qs.parse()方法將其轉化。
axios.get('/api/article') .then(res=>{ const data = qs.parse(res.data) //將表單數據轉換成JSON格式 console.log(data) }) .catch(err=>{ console.log(err) })
除了以上介紹的功能,qs還有其他更多的方法,可以去了解一下。