請求後臺接口的方式有什麽?有什麽區別
昨天被頭條的面試官面完之後虐了一地,倒是不難,問一堆這個和那個有啥不同,我心裏想著難道有可比性麽,這種問題怎麽感覺就像有時候問你人都有什麽人?有啥不同一樣。。。只能吐槽但是也無能為力,就怪自己學藝不精吧。
當時可能是面試官太帥了,所以太緊張了,我竟然腦子裏面想不起來原生是怎麽寫的了,直接說把原生的忘了,xmlhttpRequest在我的腦海裏竟然一點映象也沒了,面之前還手寫的代碼。。。
請求接口除了原生ajax,$.ajax,fetch,axios,vue框架的話自己也封裝了一個vuereaouce方法。先看看這幾個請求接口的寫法:
原生的請求方法:
var xhr = new xmlHttpRequest();
var httprequest
xhr.onreadystatechange = function(){
if(httpRequest.readyState === XMLHttpRequest.DONE){
if (httpRequest.status === 200) {
alert(httpRequest.responseText);
} else {
alert(‘There was a problem with the request.‘);
}
}
httpRequest.open(‘GET‘,url);
//發送請求
httpRequest.send();
}
原生的ajax請求經歷了這四部:
1.創建一個xmlhttpRequest請求
2.指定響應函數
3.發送請求
基於原生的ajax,大神們進行封裝凈化到了jquery的$.ajax,$.ajax如果用到現在的mvvm框架裏面就有點不搭了,顯得項目有點大占內存,配置和調用不友好
$.ajax({
type: ‘POST‘,
url: url,
data: data,
dataType: dataType,
success: function () {},
error: function () {}
});
自從2016年開始流行es6之後,fetxh和axios開始盛行了
axios:
1.從瀏覽器中創建 XMLHttpRequest2.支持 Promise API
3.客戶端支持防止CSRF
4.提供了一些並發請求的接口(重要,方便了很多的操作)
5.從 node.js 創建 http 請求
6.攔截請求和響應
7.轉換請求和響應數據
8.取消請求
9.自動轉換JSON數據 axios({ method: ‘post‘, url: ‘/axios/ajax‘, data: { } }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); }); axios相對於別的請求接口方法裏面是相對於處理的比較好的,也比較常用 fetch的寫法 fetch(url,parame,callback).then(respose.json()).then(data=>console.log(data)).catch(err =>console.log(err)) 下面這部分是博主的一些內容:
Ajax:
ajax,最早出現的發送後端請求技術,隸屬於原始js中,核心使用XMLHttpRequest對象,多個請求之間如果有先後關系的話,就會出現回調地獄。
Jquery Ajax:
是jQuery框架中的發送後端請求技術,由於jQuery是基於原始的基礎上做的封裝,所以,jquery Ajax自然也是對原始ajax的封裝
Fetch:
fetch號稱是AJAX的替代品,是在ES6出現的,使用了ES6中的promise對象。Fetch是基於promise設計的。Fetch的代碼結構比起ajax簡單多了,參數有點像jQuery ajax。但是,一定記住fetch不是ajax的進一步封裝,而是原生js。Fetch函數就是原生js,沒有使用XMLHttpRequest對象。
axios:
axios不是原生JS的,需要進行安裝,它不但可以在客戶端使用,而且可以在nodejs端使用。Axios也可以在請求和響應階段進行攔截。同樣也是基於promise對象的。
請求後臺接口的方式有什麽?有什麽區別