現(xiàn)在越來(lái)越多的網(wǎng)站采用了RESTful API架構(gòu),提供了豐富的數(shù)據(jù)接口,方便了開(kāi)發(fā)者快速獲取需要的數(shù)據(jù)。而獲取這些數(shù)據(jù)的方式,大多是通過(guò)HTTP請(qǐng)求獲取JSON格式的數(shù)據(jù)。
在實(shí)際開(kāi)發(fā)中,我們可以使用JavaScript的fetch或者XMLHttpRequest對(duì)象來(lái)進(jìn)行HTTP請(qǐng)求。其中,fetch是ES6引入的新特性,大大簡(jiǎn)化了HTTP請(qǐng)求的寫(xiě)法,但是兼容性并不是很好,所以XMLHttpRequest仍然是一種可靠的選擇。
以XMLHttpRequest為例,使用它進(jìn)行HTTP請(qǐng)求的步驟主要分為以下幾步:
// 1. 創(chuàng)建xhr對(duì)象 var xhr = new XMLHttpRequest(); // 2. 配置請(qǐng)求參數(shù) xhr.open('GET', 'https://api.example.com/data', true); // 3. 發(fā)送請(qǐng)求 xhr.send(); // 4. 監(jiān)聽(tīng)狀態(tài)變化 xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { // 5. 獲取返回的數(shù)據(jù) var data = JSON.parse(xhr.responseText); console.log(data); } }
在這個(gè)過(guò)程中,最重要的是第3步的發(fā)送請(qǐng)求和第4步的監(jiān)聽(tīng)狀態(tài)變化。在發(fā)送請(qǐng)求時(shí),我們需要傳入一個(gè)參數(shù),即請(qǐng)求的地址。這個(gè)地址是我們需要從中獲取數(shù)據(jù)的網(wǎng)站地址。在監(jiān)聽(tīng)狀態(tài)變化時(shí),我們可以通過(guò)xhr.readyState屬性監(jiān)控請(qǐng)求的狀態(tài),4代表操作已經(jīng)完成,而xhr.status代表服務(wù)器返回的HTTP狀態(tài)碼。在狀態(tài)碼為200的情況下,說(shuō)明請(qǐng)求已成功,可以通過(guò)xhr.responseText獲取返回的數(shù)據(jù)。
隨著移動(dòng)端和Web應(yīng)用的廣泛使用,HTTP請(qǐng)求獲取JSON數(shù)據(jù)的應(yīng)用也會(huì)越來(lái)越普遍。相信使用上述方法能夠輕松獲取所需的數(shù)據(jù)。