vue中axios的get請(qǐng)求和post請(qǐng)求的傳參方式、攔截器示例代碼
一、GET 和 POST 傳參方式的優(yōu)缺點(diǎn)
1.post更安全(不會(huì)作為url的一部分,不會(huì)被緩存,保存在服務(wù)器日志,以及瀏覽器瀏覽記錄中)
2.post發(fā)送的數(shù)據(jù)量更大(get有url長(zhǎng)度限制)
3.post能發(fā)送更多的數(shù)據(jù)類型(get只能發(fā)送ASCII字符)
4.post比get慢
5.Post是向服務(wù)器提交數(shù)據(jù)的一種請(qǐng)求,get是向服務(wù)器發(fā)索取數(shù)據(jù)的一種請(qǐng)求。
5.Post是向服務(wù)器提交數(shù)據(jù)的一種請(qǐng)求,get是向服務(wù)器發(fā)索取數(shù)據(jù)的一種請(qǐng)求。
7.post請(qǐng)求包含更多的請(qǐng)求頭
8.post在真正接受數(shù)據(jù)之前會(huì)先將請(qǐng)求頭發(fā)送給服務(wù)器進(jìn)行確認(rèn),然后才真正發(fā)送數(shù)據(jù)
二、GET 和 POST 傳參方式的請(qǐng)求過(guò)程
post請(qǐng)求的過(guò)程:
1.瀏覽器請(qǐng)求tcp連接(第一次握手)
2.服務(wù)器答應(yīng)進(jìn)行tcp連接(第二次握手)
3.瀏覽器確認(rèn),并發(fā)送post請(qǐng)求頭(第三次握手,這個(gè)報(bào)文比較小,所以http會(huì)在此時(shí)進(jìn) 行第一次數(shù)據(jù)發(fā)送)
4.服務(wù)器返回100 continue響應(yīng)
5.瀏覽器開(kāi)始發(fā)送數(shù)據(jù)
6.服務(wù)器返回200 ok響應(yīng)
get請(qǐng)求的過(guò)程
1.瀏覽器請(qǐng)求tcp連接(第一次握手)
2.服務(wù)器答應(yīng)進(jìn)行tcp連接(第二次握手)
3.瀏覽器確認(rèn),并發(fā)送get請(qǐng)求頭和數(shù)據(jù)(第三次握手,這個(gè)報(bào)文比較小,所以http會(huì)在此時(shí)進(jìn)行第一次數(shù)據(jù)發(fā)送)
4.服務(wù)器返回200 ok響應(yīng)。
三、axios使用
1、axios的安裝
$ npm install axios // 使用npm $ bower install axios // 使用bower <script src="https://unpkg.com/axios/dist/axios.min.js"></script> // 通過(guò)cdn直接調(diào)用
2、axios的引入
import axios from 'axios';
3、get
第一種參(參數(shù)在url上)
axios.get('/adate?id=123').then(res => { console.log(res); })
第二種傳參(通過(guò)param選項(xiàng)傳遞參數(shù))
axios.get('/adate?id=123',{ params: { id: 1 } }).then(res => { console.log(res); })
4、post
axios.post('/api/axios', { uname: 'lisi', pwd: 123 }).then(ret => { console.log(ret.data) })
四、攔截器
1、請(qǐng)求攔截器
import axios from 'axios' const service = axios.create({ baseURL: '基礎(chǔ)路徑', timeout: 15000 }) //添加請(qǐng)求攔截器 請(qǐng)求接口統(tǒng)一添加token service.interceptors.request.use( config =>{ // 成功的回調(diào) }, error =>{ // 失敗的回調(diào) } ) export default service
2、響應(yīng)攔截器
import axios from 'axios' const service = axios.create({ baseURL: '基礎(chǔ)路徑', timeout: 15000 }) // 響應(yīng)攔截器 service.interceptors.response.use( response => { // 成功回調(diào) }, error => { // 失敗回調(diào) } ) export default service
3、案例
/** * 請(qǐng)求封裝 */ import axios from 'axios'; import configUrl from './url.js'; import store from '../store'; const service = axios.create({ baseURL: configUrl.baseURL, // withCredentials: true, // 當(dāng)跨域請(qǐng)求時(shí)發(fā)送cookie timeout: 15000 // 請(qǐng)求超時(shí) }); //添加請(qǐng)求攔截器 請(qǐng)求接口統(tǒng)一添加token service.interceptors.request.use( config =>{ config.headers.token = store.getters.token || ''; //請(qǐng)求添加token return config; }, error =>{ return Promise.reject(error); } ) // 響應(yīng)攔截器 service.interceptors.response.use( response => { //如果接口返回token,替換本地舊token if (response.headers.token) { sessionStorage.setItem("token", response.headers.token); } //自定義設(shè)置后臺(tái)返回code對(duì)應(yīng)的響應(yīng)方式 if (response.data.code == 203) { // 未登錄或登錄超時(shí) return Promise.reject(new Error('登錄超時(shí)')); } else { //接口正常,返回?cái)?shù)據(jù) return response; } }, error => { if (error.message) { // this.$massage.error('服務(wù)器開(kāi)小差了,請(qǐng)稍后再試!') //錯(cuò)誤響應(yīng) alert('服務(wù)器開(kāi)小差了,請(qǐng)稍后再試!') } return Promise.reject(error); } ); //暴露出封裝過(guò)的服務(wù) export default service;
到此這篇關(guān)于vue中axios的get請(qǐng)求和post請(qǐng)求的傳參方式、攔截器的文章就介紹到這了,更多相關(guān)axios get請(qǐng)求和post請(qǐng)求傳參內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue 雙向數(shù)據(jù)綁定的實(shí)現(xiàn)學(xué)習(xí)之監(jiān)聽(tīng)器的實(shí)現(xiàn)方法
這篇文章主要介紹了vue 雙向數(shù)據(jù)綁定的實(shí)現(xiàn)學(xué)習(xí)之監(jiān)聽(tīng)器的實(shí)現(xiàn)方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11基于Vue.js 2.0實(shí)現(xiàn)百度搜索框效果
這篇文章主要為大家詳細(xì)介紹了基于Vue.js 2.0實(shí)現(xiàn)百度搜索框效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09vue 彈窗時(shí) 監(jiān)聽(tīng)手機(jī)返回鍵關(guān)閉彈窗功能(頁(yè)面不跳轉(zhuǎn))
這篇文章主要介紹了vue 彈窗時(shí) 監(jiān)聽(tīng)手機(jī)返回鍵關(guān)閉彈窗功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值(頁(yè)面不跳轉(zhuǎn)) ,需要的朋友可以參考下2019-05-05Vue.extend 編程式插入組件的實(shí)現(xiàn)
這篇文章主要介紹了Vue.extend 編程式插入組件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11詳解vue-router2.0動(dòng)態(tài)路由獲取參數(shù)
本篇文章主要介紹了詳解vue-router2.0動(dòng)態(tài)路由獲取參數(shù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06在Vue3里使用scss實(shí)現(xiàn)簡(jiǎn)單的換膚功能
這篇文章主要介紹了在Vue3里使用scss實(shí)現(xiàn)簡(jiǎn)單的換膚功能,主題色切換、亮色模式和暗黑模式切換、背景圖切換,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2024-12-12VUE3基礎(chǔ)學(xué)習(xí)之click事件詳解
由于vue是一個(gè)雙向數(shù)據(jù)綁定的框架,它的點(diǎn)擊事件與以前常用的還是有很大的差別的,下面這篇文章主要給大家介紹了關(guān)于VUE3基礎(chǔ)學(xué)習(xí)之click事件的相關(guān)資料,需要的朋友可以參考下2022-01-01Vue.js開(kāi)發(fā)環(huán)境快速搭建教程
這篇文章主要為大家詳細(xì)介紹了Vue.js開(kāi)發(fā)環(huán)境快速搭建教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03vue.js自定義組件實(shí)現(xiàn)v-model雙向數(shù)據(jù)綁定的示例代碼
這篇文章主要介紹了vue.js自定義組件實(shí)現(xiàn)v-model雙向數(shù)據(jù)綁定的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01