前端調用api接口方法總結


我用得最多的大概就是jquery中的ajax了吧,就從ajax總結起走:

一、ajax:

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

$.ajax({

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

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

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

  async:        //要求為Boolean類型的參數,默認設置為true,所有請求均為異步請求。

  data:         //要求為Object或String類型的參數,發送到服務器的數據。

  dataType:     //服務器返回的數據類型。

  beforeSend:   //要求為Function類型的參數,發送請求前可以修改
  complete:     //要求為Function類型的參數,請求完成后調用的回調函數(請求成功或失敗時均調用)。

  success:      // 請求成功后調用的回調函數

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

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


})

常用可選參數:

type

類型:String

默認值: "GET")。請求方式 ("POST" 或 "GET"), 默認為 "GET"。注意:其它 HTTP 請求方法,如 PUT 和 DELETE 也可以使用,但僅部分瀏覽器支持。

 

url

類型:String

默認值: 當前頁地址。發送請求的地址。

 

contentType

類型:String

默認值: "application/x-www-form-urlencoded"。發送信息至服務器時內容編碼類型。

默認值適合大多數情況。

常用值參考

application/x-www-form-urlencoded:數據被編碼為名稱/值對。這是標准的編碼格式

application/json:消息主體是序列化后的 JSON 字符串

multipart/form-data: 需要在表單中進行文件上傳時,就需要使用該格式。常見的媒體格式是上傳文件之時使用的

text/plain:數據以純文本形式(text/json/xml/html)進行編碼,其中不含任何控件或格式字符。

 

async

類型:Boolean

默認值: true。默認設置下,所有請求均為異步請求。如果需要發送同步請求,請將此選項設置為 false。

注意,同步請求將鎖住瀏覽器,用戶其它操作必須等待請求完成才可以執行。

 

context

類型:Object

這個對象用於設置 Ajax 相關回調函數的上下文。也就是說,讓回調函數內 this 指向這個對象(如果不設定這個參數,那么 this 就指向調用本次 AJAX 請求時傳遞的 options 參數)。比如指定一個 DOM 元素作為 context 參數,這樣就設置了 success 回調函數的上下文為這個 DOM 元素。

 

data

類型:String

發送到服務器的數據。將自動轉換為請求字符串格式。GET 請求中將附加在 URL 后。查看 processData 選項說明以禁止此自動轉換。必須為 Key/Value 格式。如果為數組,jQuery 將自動為不同值對應同一個名稱。如 {foo:["bar1", "bar2"]} 轉換為 '&foo=bar1&foo=bar2'

 

dataType

類型:String

預期服務器返回的數據類型。如果不指定,jQuery 將自動根據 HTTP 包 MIME 信息來智能判斷,比如 XML MIME 類型就被識別為 XML。在 1.4 中,JSON 就會生成一個 JavaScript 對象,而 script 則會執行這個腳本。隨后服務器端返回的數據會根據這個值解析后,傳遞給回調函數。可用值:

  • "xml": 返回 XML 文檔,可用 jQuery 處理。
  • "html": 返回純文本 HTML 信息;包含的 script 標簽會在插入 dom 時執行。
  • "script": 返回純文本 JavaScript 代碼。不會自動緩存結果。除非設置了 "cache" 參數。注意:在遠程請求時(不在同一個域下),所有 POST 請求都將轉為 GET 請求。(因為將使用 DOM 的 script標簽來加載)
  • "json": 返回 JSON 數據 。
  • "jsonp": JSONP 格式。使用 JSONP 形式調用函數時,如 "myurl?callback=?" jQuery 將自動替換 ? 為正確的函數名,以執行回調函數。
  • "text": 返回純文本字符串

 

jsonp

類型:String

在一個 jsonp 請求中重寫回調函數的名字。這個值用來替代在 "callback=?" 這種 GET 或 POST 請求中 URL 參數里的 "callback" 部分,比如 {jsonp:'onJsonPLoad'} 會導致將 "onJsonPLoad=?" 傳給服務器。

 

二、axios

vue2.0之后,就不再對vue-resource更新,而是推薦使用axios。基於 Promise 的 HTTP 請求客戶端,可同時在瀏覽器和 Node.js 中使用。

特點:

(1)在瀏覽器中發送 XMLHttpRequests 請求

(2)在 node.js 中發送 http請求

(3)支持 Promise API

(4)攔截請求和響應

(5)轉換請求和響應數據

(6)取消請求

(7)自動轉換為JSON數據

(8)客戶端支持保護安全免受 CSRF/XSRF 攻擊

安裝:

使用 npm:$ npm install axios

使用 bower:$ bower install axios

使用cdn:<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

GET方式:

axios.get().then().catch()

注:get方式傳參數可以直接跟在url后面,也可以通過param對象傳

 

POST方式:

axios.post().then().catch()

注:post方式傳參必須用對象傳

 

執行多個並發請求:

function A(){
  return axios.get()
}

function B(){
  return axios.post()
}

axios.all([A,B]).then(axios.spread(()=>{}))

還有一些詳細配置:https://www.cnblogs.com/peachmeimei/p/8916098.html

與axios一起用的qs,用qs庫對數據進行編碼,有單獨筆記。

 

三、websocket

vue中使用的小demo:

 

export default{
data(){
     return {
          webSocket:null
      }
},
created(){
     //頁面剛進入時開啟長連接
      this.initWebSocket();
},
destroyed(){
     //頁面銷毀時關閉長連接
     this.webSocketClose();
},
methods: {
    initWebSocket(){            //初始化websocket
         const url='ws://121.40.165.18:8800';
         this.webSocket=new WebSocket(url);
         this.webSocket.onopen=this.socketOpen;
         this.webSocket.onerror=this.socketError;
         this.webSocket.onmessage=this.socketMessage;
         this.webSocket.onclose=this.webSocketClose;
    },
    socketOpen(){
           console.log('socket open');
    },
    socketError(e){
          console.log('socket error');
   },
    socketMessage(e){
         /* const redata = JSON.parse(e.data);*/
        //獲取數據並且處理數據的地方
        console.log(e);
   },
     websocketsend(agentData){//數據發送
         this.websock.send(agentData);
   },
    webSocketClose(e){
         console.log("connection closed");
    }
  }

}

 

 

 

轉載於:https://www.cnblogs.com/nanyang520/p/11206290.html

    https://www.cnblogs.com/zyl96/p/10254421.html

    https://www.cnblogs.com/yoissee/p/5901677.html

 


免責聲明!

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



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