調用api接口的方法總結


JQuery中的ajax方法:

參數解釋:(主要就用到url、type、data、dataType、success、error等,其他的看需求而定)

$.ajax({

  url:"   ",                  //請求的地址,類型為string

  type:"   ",               //請求方式,類型為string,兩種“get”或者“post”,默認為“get”

  timeout:                //要求為Number類型的參數,設置請求超時時間(毫秒)。此設置將覆蓋$.ajaxSetup()方法的全局設置。

  async:                   //要求為Boolean類型的參數,默認設置為true,所有請求均為異步請求。如果需要發送同步請求,請將此選項設置為false。注意,同步請求將鎖住瀏覽器,用戶其他操作必須等待請求完成才可以執行。

  cache:                  //要求為Boolean類型的參數,默認為true(當dataType為script時,默認為false),設置為false將不會從瀏覽器緩存中加載請求信息。

  data:                    //要求為Object或String類型的參數,發送到服務器的數據。如果已經不是字符串,將自動轉換為字符串格式。get請求中將附加在url后

  dataType:            //要求為String類型的參數,預期服務器返回的數據類型。如果不指定,JQuery將自動根據http包mime信息返回responseXML或responseText  作為回調函數參數傳遞。可用的類型如下:
                               xml:返回XML文檔,可用JQuery處理。
                               html:返回純文本HTML信息;包含的script標簽會在插入DOM時執行。
                               script:返回純文本JavaScript代碼。不會自動緩存結果。除非設置了cache參數。注意在遠程請求時(不在同一個域下),所有post請求都將轉為get請求。
                               json:返回JSON數據。
                               jsonp:JSONP格式。使用SONP形式調用函數時,例如myurl?callback=?,JQuery將自動替換后一個“?”為正確的函數名,以執行回調函數。
                               text:返回純文本字符串。

  beforeSend:      //要求為Function類型的參數,發送請求前可以修改XMLHttpRequest對象的函數,例如添加自定義HTTP頭。在beforeSend中如果返回false可以取消本次ajax請求。

  complete:         //要求為Function類型的參數,請求完成后調用的回調函數(請求成功或失敗時均調用)。

  success:            // 要求為Function類型的參數,請求成功后調用的回調函數,有兩個參數。

                                  (1)由服務器返回,並根據dataType參數進行處理后的數據。
                                  (2)描述狀態的字符串。

  error:                //要求為Function類型的參數,請求失敗時被調用的函數。該函數有3個參數,即XMLHttpRequest對象、錯誤信息、捕獲的錯誤對象(可選)

      contentType:    //要求為String類型的參數,當發送信息至服務器時,內容編碼類型默認為"application/x-www-form-urlencoded"。該默認值適合大多數應用場合。

  .......還有很多,只是基本用不到

})

$.ajax({
         url: "http://www.hzhuti.com",    //請求的url地址
         dataType: "json",   //返回格式為json
         async: true, //請求是否異步,默認為異步,這也是ajax重要特性
         data: {
                 "id": "value"
                },    //參數值
          type: "GET",   //請求方式
          beforeSend: function() {
                      //請求前的處理
                  },
          success: function(req) {
                      //請求成功時處理,一般只用到這一個
                  },
          complete: function() {
                      //請求完成的處理
                  },
          error: function() {
                      //請求出錯處理
                  }
        });

 用vue時,經常用到的。vue-resource和axios

 vue-resource(基本不再使用):

優點:體積小、支持主流的瀏覽器、支持Promise API和URI Templates、支持攔截器。

用法:全局引入后,則在實例中使用。

常用的:

  this.$http.get().then();

  this.$http.post().then();

  this.$http.jsonp().then();

axios:axios是基於promise的用於瀏覽器和nodejs的HTTP客戶端,本身有以下特征:

  1. 從瀏覽器中創建XMLHttpRequest;
  2. 從nodejs發出http請求
  3. 支持promiseAPI
  4. 攔截 請求和響應
  5. 轉換請求和響應數據
  6. 取消請求
  7. 自動轉換JSON數據
  8. 客戶端支持防止CSRF/XSRF攻擊

 初始化常用的配置項:

axios.defaults.baseURL = 'https://www.baidu.com';

axios.interceptors.response.use(result => result.data);
//=>設置響應攔截器:分別在響應成功和失敗的時候做一些攔截處理(在執行成功后設定的方法之前,先會執行攔截器中的方法)

axios.defaults.validateStatus = function validateStatus(status) {
 //=>自定義成功失敗規則:RESOLVE / REJECT(默認規則:狀態碼以2開頭算作成功)
      return /^(2|3)\d{2}$/.test(status);
};

 //=>設置在POST請求中基於請求主體向服務器發送內容的格式,默認是RAW,項目中常用的是URL-ENCODEED格式
axios.defaults.headers['Content-Type'] = 'appliction/x-www-form-urlencoded';

axios.defaults.transformRequest = data => {
    //=>DATA:就是請求主體中需要傳遞給服務器的內容(對象)
    let str = ``;
    for (let attr in data) {
        if (data.hasOwnProperty(attr)) {
            str += `${attr}=${data[attr]}&`;
        }
    }
    return str.substring(0, str.length - 1);
};

 執行get數據請求:

axios.get('url',{
  params:{
    id:'接口配置參數(相當於url?id=xxxx)',
  },
}).then(function(res){
  console.log(res);//處理成功的函數 相當於success
}).catch(function(error){
  console.log(error)//錯誤處理 相當於error
})

 執行post數據請求:

axios.post('url',{data:xxx},{
  headers:xxxx,
}).then(function(res){
  console.log(res);//處理成功的函數 相當於success
}).catch(function(error){
  console.log(error)//錯誤處理 相當於error
})

axios API 通過相關配置傳遞給axios完成請求:

axios({
  method:'delete',
  url:'xxx',
  cache:false,
  params:{id:123},
  headers:xxx,
})
//------------------------------------------//
axios({
  method: ’post’,
  url: ’/user/12345’,
  data: {
    firstName: ’Fred’,
    lastName: ’Flintstone’
  }
});

axios的並發(axios.all,axios.spread):

let axiosList=[
   axios.get('url1',{params:xxx,dateType:'JSON'}),
   axios.get('url2',{params:xxx,dateType:'TEXT'}),
]
axios.all(axiosList).then(axios.spread(function(res1,res2){
  console.log(res1,res2)//分別是兩個請求的返回值
})
axios包含所有請求方式函數的封裝:
axios.get(url [,config])
axios.delete(url [,config])
axios.head(url [,config])
axios.post(url [,data [,config]])
axios.put(url [,data [,config]])
axios.patch(url [,data [,config]])
當使用別名方法時,不需要在config中指定url,method和data屬性。
創建實例:
var instance = axios.create({//初始化數據
  baseURL: ’https://some-domain.com/api/’,
  timeout: 1000,
  headers: {’X-Custom-Header’: ’foobar’}
});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM