在Vue中,如果需要向服務器發送POST請求,可以使用this.$http.post。這個函數有三個參數:URL,要發送的數據(可以是對象、字符串或FormData實例),還有一個配置對象(可選)。
this.$http.post(url, data, [options])
URL參數可以是絕對路徑或相對路徑。如果是相對路徑,默認會在當前頁面URL的目錄下發送請求。這個參數必須要提供。
要發送的數據可以是普通的JavaScript對象,也可以是FormData實例(用于上傳文件),還可以是字符串。一般來說,后端API接口文檔會對請求數據格式有說明。
配置對象是可選的,有以下屬性:
- params: 對象類型,發送到服務器的URL參數。
- headers: 對象類型,發送到服務器的請求頭。
- emulateJSON: 布爾類型,用于兼容IE9。如果設置為true,Vue會在發送POST請求時,把請求頭Content-Type設置為application/x-www-form-urlencoded;charset=UTF-8,同時把數據序列化成URL-encoded格式。
- emulateHTTP: 布爾類型,用于兼容PUT和DELETE方法。如果設置為true,Vue會在發送PUT和DELETE請求時,把請求頭X-HTTP-Method-Override設置為PUT或DELETE,同時把數據放到POST請求的body中。
- before: 函數類型,在請求發送之前執行,可以攔截請求,并返回一個false或Promise對象來取消請求。
- progress: 函數類型,用于監聽上傳進度,只有當發送FormData實例時才有效。
- timeout: 數字類型,設置請求超時時間(單位毫秒)。如果超過這個時間服務器沒有響應,請求會被取消。
- credentials: 布爾類型,表示是否發送cookie。默認情況下,瀏覽器不會把cookie發送給不同源的服務器,但是在跨域請求時,如果設置credentials為true,瀏覽器會自動把cookie發送給服務器。
下面是一個例子:
this.$http.post('/api/login', { username: 'foo', password: '123456' }, { headers: { 'Authorization': 'Bearer ' + token } }).then(response =>{ console.log(response.data); }).catch(error =>{ console.log(error); });
在這個例子中,我們向服務器發送一個POST請求,把用戶名和密碼作為請求數據。我們還在請求頭中添加了一個Authorization字段,用于發送 token。請求成功后,我們從響應對象中獲得了服務器返回的數據。