1. axios簡介
axios 是一個基于 Promise 的 HTTP 客戶端,主要用于瀏覽器和 Node.js 環境中發送 HTTP 請求。它是目前前端開發中最流行的網絡請求庫之一,被廣泛應用于各種 JavaScript 項目(如 React、Vue、Angular 等框架或原生 JS 項目)。
????????核心特點
- 支持瀏覽器和 Node.js?:在瀏覽器中使用 XMLHttpRequest 發送請求,在 Node.js 中使用 http 模塊,實現了跨環境兼容。
- 基于 Promise?:支持 Promise API,可配合?
async/await
?使用,讓異步請求代碼更簡潔、易讀。 - 攔截請求和響應?:可以在請求發送前或響應返回后進行攔截處理(如添加請求頭、處理錯誤、加載狀態管理等)。
- 自動轉換 JSON 數據?:請求時會自動將數據轉為 JSON 格式,響應時會自動解析 JSON 數據,無需手動處理。
- 取消請求:支持取消正在進行的 HTTP 請求,避免無效請求浪費資源。
- 超時處理:可以設置請求超時時間,超時后自動中斷請求。
- 客戶端防止 XSRF:提供了防御跨站請求偽造(XSRF)的機制。
?
2. axios請求地址
鏈接請求方式:功能強大的網絡請求庫
<script?src="https://unpkg.com/axios/dist/axios.min.js"></script>
?本地導入方式:例子:在同目錄下的js文件里的本地axios文件
<script src="js/axios.min.js"></script>
?
3. axios的基本結構
var myurl = "需要請求的頁面以及參數"
axios.get(myurl).then(function(res))
myurl指的是向后臺請求的頁面以及自定義訪問的參數
res指后臺響應請求后傳遞回的參數,數據格式一般為json,用Vue中的data來接收
舉例:向后臺servlet的class.do發送操作請求op=classList
var app=new Vue({el: "#app",data:{classesList:[]},methods:{searchClass:function () {var than = thisvar myurl="http://localhost:8080/class.do?op=classesList"axios.get(myurl).then(function (res) {than.classesList=res.data})}}
})
如果myurl傳遞參數多,則使用axios.post(myurl)方法。
進階:axios的標準格式為
axios.get(myurl,headers{})
其中myurl為傳遞參數地址,header{}為請求頭
如果傳遞參數過多,則使用post:
axios.post(myurl,body,headers)axios.post(myurl,{'key':'value','key2':'value',...},headers{'token':'value'})
myurl為傳遞參數的地址,
body為傳遞的參數map,
headers為傳遞的請求頭。
附錄:
請求頭 headers 簡介
在 HTTP 協議中,請求頭(Request Headers)是客戶端(如瀏覽器)向服務器發送請求時攜帶的附加信息。它們以鍵值對的形式存在,用于描述請求的元數據(如瀏覽器類型、請求的資源類型、緩存策略等),幫助服務器理解如何處理請求。
理解請求頭是開發和調試 HTTP 應用的基礎,合理設置請求頭可優化性能、增強安全性,并確保客戶端與服務器正確交互。
1.?通用頭(General Headers)
適用于請求和響應,但與具體數據無關:
Cache-Control
:控制緩存策略(如no-cache
,?max-age=3600
)。Connection
:控制連接狀態(如keep-alive
,?close
)。Date
:請求的日期和時間。Pragma
:兼容性緩存指令(如no-cache
)。Transfer-Encoding
:數據傳輸編碼方式(如chunked
)。
2.?請求頭(Request-Specific Headers)
描述請求的特定信息:
Accept
:客戶端可接受的響應內容類型(如application/json
,?text/html
)。Accept-Charset
:客戶端可接受的字符集(如utf-8
,?iso-8859-1
)。Accept-Encoding
:客戶端可接受的內容編碼(如gzip
,?deflate
,?br
)。Accept-Language
:客戶端可接受的自然語言(如zh-CN
,?en-US
)。Authorization
:身份驗證信息(如Bearer token
,?Basic base64
)。Cookie
:客戶端存儲的 Cookie 信息。Host
:請求的服務器域名和端口(如www.example.com:443
)。Origin
:發起跨域請求的源(如https://example.com
)。Referer
:前一個頁面的 URL(拼寫錯誤但被廣泛接受)。User-Agent
:客戶端信息(如瀏覽器類型、操作系統,如Mozilla/5.0 (Windows NT 10.0)...
)。
3.?實體頭(Entity Headers)
描述請求體的元數據(若有請求體):
Content-Length
:請求體的長度(字節)。Content-Type
:請求體的媒體類型(如application/json
,?multipart/form-data
)。Content-Encoding
:請求體的編碼方式(如gzip
)。Content-Language
:請求體的自然語言(如zh-CN
)。
Axios(HTTP 客戶端)
axios.post('https://api.example.com/data', { key: 'value' }, {headers: {'Content-Type': 'application/json','Authorization': 'Bearer your_token'}
});