Vue.js是一款流行的JavaScript框架,其中擁有著諸多方便開發(fā)者的工具和函數(shù),其中之一就是request()函數(shù)。request()函數(shù)能夠幫助我們創(chuàng)建基于XMLHttpRequest或JsonP的HTTP請(qǐng)求,并處理響應(yīng)結(jié)果。在這篇文章中,我們將會(huì)詳細(xì)探討request()函數(shù)的使用情況以及常見的參數(shù)和響應(yīng)格式。
request()函數(shù)在Vue.js中是一個(gè)基于Promise的函數(shù),它可以返回一個(gè)Promise對(duì)象,這個(gè)對(duì)象可以被用來(lái)處理異步請(qǐng)求的結(jié)果。在使用Vue.js的時(shí)候,可以通過(guò)這個(gè)函數(shù)創(chuàng)建異步操作,發(fā)送HTTP請(qǐng)求并處理響應(yīng)
// 使用request()函數(shù)實(shí)現(xiàn)一個(gè)基礎(chǔ)的GET請(qǐng)求 const axios = require('axios') axios.request({ method: 'GET', url: 'https://jsonplaceholder.typicode.com/posts', }) .then(response =>{ console.log(response) }) .catch(error =>{ console.error(error) })
在這個(gè)示例中,我們通過(guò)導(dǎo)入axios庫(kù)并傳入一個(gè)包含請(qǐng)求方法和請(qǐng)求URL的對(duì)象來(lái)實(shí)現(xiàn)一個(gè)GET請(qǐng)求。request()接收的參數(shù)對(duì)象必須包含method和url字段,其他字段和方法(如params、headers、data等)都可以根據(jù)需要加入。
axios.request({ method: 'POST', url: 'https://jsonplaceholder.typicode.com/posts', data: { title: 'foo', body: 'bar', userId: 1 } }) .then(response =>{ console.log(response) }) .catch(error =>{ console.error(error) })
假設(shè)我們需要在這個(gè)JSONPlaceholder API上發(fā)送一個(gè)新的POST請(qǐng)求,我們需要在請(qǐng)求對(duì)象中增加一個(gè)名為data的屬性,它的值包含需要POST的數(shù)據(jù)。data屬性中的數(shù)據(jù)會(huì)被自動(dòng)序列化成JSON格式,然后發(fā)送到請(qǐng)求URL所指的服務(wù)器。注意,當(dāng)發(fā)送POST請(qǐng)求時(shí)需要同時(shí)提供對(duì)應(yīng)的content-type。
axios.request({ method: 'PUT', url: 'https://jsonplaceholder.typicode.com/posts/1', data: { title: '新的標(biāo)題' }, params: { userId: 1 } }) .then(response =>{ console.log(response) }) .catch(error =>{ console.error(error) })
PUT請(qǐng)求和其他基本的HTTP請(qǐng)求大同小異,但是由于PUT請(qǐng)求需要指定要修改的資源ID,所以我們需要在請(qǐng)求URL中指定它。在這個(gè)示例中,我們給出了一個(gè)名為params的新屬性,這個(gè)屬性用來(lái)傳遞URL中的查詢參數(shù)。
axios.request({ method: 'DELETE', url: 'https://jsonplaceholder.typicode.com/posts/1' }) .then(response =>{ console.log(response) }) .catch(error =>{ console.error(error) })
最后是DELETE請(qǐng)求。在這個(gè)示例中,我們沒有發(fā)送任何數(shù)據(jù)到服務(wù)器,只是告訴它要?jiǎng)h除/posts/1這個(gè)資源。注意,我們沒有使用params屬性,因?yàn)樵谶@個(gè)URL中沒有查詢參數(shù)