JS調用接口詳解

在前端開發中,經常需要通過JS調用API接口獲取數據或與後端進行交互。本文將從多個方面詳細介紹JS調用接口的方法及注意事項。

一、JS調用接口的方法

JS調用接口的方法有多種,如使用XMLHttpRequest對象、Fetch API、jQuery的$.ajax()、Vue.js的axios等。這裡以使用XMLHttpRequest對象為例。

  
    function postData() {  
        var url = "https://example.com/api";  
        var data = {name: 'John', age: 25};  
        var xhr = new XMLHttpRequest();  
        xhr.open("POST", url, true);  
        xhr.setRequestHeader("Content-Type", "application/json");  
        xhr.send(JSON.stringify(data));  
        xhr.onreadystatechange = function() {  
            if(xhr.readyState == 4 && xhr.status == 200) {  
                console.log(xhr.responseText);  
            }  
        }  
    }  
    postData();
  

上述代碼使用XMLHttpRequest對象向指定URL發送POST請求,並將請求體數據轉為JSON格式發送給後端。接收到響應後,在控制台中輸出響應內容。

二、JS調用接口是如何更改Content-Type

發送POST請求時需要在Request Header中設置Content-Type,常見的Content-Type有以下幾種:

  • application/x-www-form-urlencoded:表單數據
  • multipart/form-data:文件上傳
  • application/json:JSON數據

可以通過調用setRequestHeader方法設置Content-Type。例如:

  
    var xhr = new XMLHttpRequest();  
    xhr.open("POST", url, true);  
    xhr.setRequestHeader("Content-Type", "application/json");  
  

上述代碼將Content-Type設置為application/json。

三、JS調用接口並發

JS可以通過創建多個XMLHttpRequest對象並同時發送請求實現並發。例如:

  
    var xhr1 = new XMLHttpRequest();  
    xhr1.open("GET", "https://example.com/api1", true);  
    xhr1.send();  
    var xhr2 = new XMLHttpRequest();  
    xhr2.open("GET", "https://example.com/api2", true);  
    xhr2.send();  
    //在兩個請求均獲得響應後執行其他操作
  

上述代碼中,同時發送了兩個GET請求,並在兩個請求均獲得響應後執行其他操作。

四、JS調用接口獲取返回

JS獲取接口返回可以通過監聽XMLHttpRequest對象的readystatechange事件,在響應狀態為4(完成)且狀態碼為200時獲取響應內容。例如:

  
    var xhr = new XMLHttpRequest();  
    xhr.open("GET", "https://example.com/api", true);  
    xhr.send();  
    xhr.onreadystatechange = function() {  
        if(xhr.readyState == 4 && xhr.status == 200) {  
            console.log(xhr.responseText);  
        }  
    }  
  

上述代碼中,監聽XMLHttpRequest對象的readystatechange事件,當狀態為4(完成)且狀態碼為200時,在控制台中輸出響應內容。

五、JS調用接口設置超時時間

JS設置接口超時時間可以通過XMLHttpRequest對象的timeout屬性實現。例如:

  
    var xhr = new XMLHttpRequest();  
    xhr.open("GET", "https://example.com/api", true);  
    xhr.timeout = 5000; //設置超時時間為5秒  
    xhr.send();  
    xhr.onreadystatechange = function() {  
        if(xhr.readyState == 4 && xhr.status == 200) {  
            console.log(xhr.responseText);  
        }  
    }  
    xhr.ontimeout = function() {  
        console.log("請求超時!");  
    }  
  

上述代碼中,設置XMLHttpRequest對象的timeout屬性為5000毫秒,監聽ontimeout事件,當請求超時時在控制台中輸出提示信息。

六、JS調用接口附件不下載

在下載附件時,服務器默認會將附件下載到本地。可以通過設置Content-Disposition響應頭實現讓瀏覽器在新標籤頁中打開附件而不是下載。例如:

  
    var xhr = new XMLHttpRequest();  
    xhr.open("GET", "https://example.com/api", true);  
    xhr.responseType = "blob"; //設置響應類型為Blob  
    xhr.setRequestHeader("Content-Disposition", "inline"); //設置Content-Disposition響應頭  
    xhr.send();  
    xhr.onreadystatechange = function() {  
        if(xhr.readyState == 4 && xhr.status == 200) {  
            var url = URL.createObjectURL(xhr.response);  
            window.open(url); //在新標籤頁中打開Blob數據  
        }  
    }  
  

上述代碼中,設置XMLHttpRequest對象的responseType屬性為blob,以獲取Blob數據。同時設置Content-Disposition響應頭為inline,實現瀏覽器在新標籤頁中打開附件而不是下載。在獲取到Blob數據後,使用URL.createObjectURL方法生成URL,再通過window.open方法在新標籤頁中打開。

七、JS調用接口提示500

服務器返回500錯誤時,可以使用XMLHttpRequest對象的onerror事件監聽錯誤,並在控制台中輸出相應提示信息。例如:

  
    var xhr = new XMLHttpRequest();  
    xhr.open("GET", "https://example.com/api", true);  
    xhr.send();  
    xhr.onreadystatechange = function() {  
        if(xhr.readyState == 4 && xhr.status == 200) {  
            console.log(xhr.responseText);  
        }  
    }  
    xhr.onerror = function() {  
        console.log("服務器返回500錯誤!");  
    }  
  

上述代碼中,監聽XMLHttpRequest對象的onerror事件,當服務器返回500錯誤時在控制台中輸出提示信息。

八、JS調用接口前端超時請求鏈會斷嗎

前端發送請求後,如果在請求超時時未收到響應,請求鏈並不會斷掉,仍然會發送到服務器。只是請求超時後監聽到ontimeout事件並進行相應處理。

九、JS調用HTTP接口

JS調用HTTP接口可以使用XMLHttpRequest對象。例如:

  
    var xhr = new XMLHttpRequest();  
    xhr.open("GET", "http://example.com/api", true); //使用HTTP協議  
    xhr.send();  
    xhr.onreadystatechange = function() {  
        if(xhr.readyState == 4 && xhr.status == 200) {  
            console.log(xhr.responseText);  
        }  
    }  
  

上述代碼中,使用XMLHttpRequest對象通過HTTP協議向URL發送GET請求,並在接收到響應後在控制台中輸出響應內容。

十、JS如何調用API接口數據

JS可以通過調用API接口獲取數據,以JSON格式返回數據。例如:

  
    var url = "https://example.com/api";  
    fetch(url)  
        .then(function(response) {  
            return response.json();  
        })  
        .then(function(json) {  
            console.log(json);  
        });  
  

上述代碼中,調用fetch方法獲取URL返回的數據,通過鏈式調用then方法處理響應。第一個then方法將響應轉為JSON格式,第二個then方法接收JSON數據並在控制台中輸出。

結語

通過本文的詳細介紹,相信大家對JS調用接口有了更深入的了解。在應用中,仍需根據具體情況進行調整和優化,充分發揮JS調用接口的作用。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/227455.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-09 16:29
下一篇 2024-12-09 16:30

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Java 監控接口返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控接口返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • Python接口自動化測試

    本文將從如下多個方面對Python編寫接口自動化進行詳細闡述,包括基本介紹、常用工具、測試框架、常見問題及解決方法 一、基本介紹 接口自動化測試是軟件測試中的一種自動化測試方式。通…

    編程 2025-04-27
  • JS圖片沿着SVG路徑移動實現方法

    本文將為大家詳細介紹如何使用JS實現圖片沿着SVG路徑移動的效果,包括路徑製作、路徑效果、以及實現代碼等內容。 一、路徑製作 路徑的製作,我們需要使用到SVG,SVG是可縮放矢量圖…

    編程 2025-04-27
  • Jadoor門鎖開發接口接入指南

    本文將從多個方面詳細介紹如何將門鎖接入Jadoor平台的開發接口,方便開發者們快速實現門鎖遠程控制、開鎖記錄查看等功能。 一、Jadoor門鎖開發接口簡介 Jadoor是一款用於密…

    編程 2025-04-27
  • 如何使用JS調用Python腳本

    本文將詳細介紹通過JS調用Python腳本的方法,包括使用Node.js、Python shell、child_process等三種方法,以及在Web應用中的應用。 一、使用Nod…

    編程 2025-04-27
  • 後端接口設計開發經驗分享

    在受到前端某些限制或特殊需求時,後端接口的設計和開發顯得尤為重要。下面從以下幾個方面進行講述。 一、命名規範 合理的命名規範可以大大提高接口的可讀性和可維護性。以下是一些命名規範的…

    編程 2025-04-27

發表回復

登錄後才能評論