您的位置:

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调用接口的作用。

重学java笔记,java笔记总结

2022-11-23
java学习笔记(java初学笔记)

2022-11-14
JS调用接口详解

2023-05-19
java方法整理笔记(java总结)

2022-11-08
java基础知识学习笔记一,Java基础笔记

2022-11-21
发篇java复习笔记(java课程笔记)

2022-11-09
js高级程序设计笔记14(js高级程序设计笔记14页)

本文目录一览: 1、JavaScript高级程序设计 该怎么看 2、JavaScript学习笔记之数组基本操作示例 3、JS中有关sort以及return的问题 JavaScript高级程序设计 该怎

2023-12-08
htmljs编程笔记(html代码笔记)

本文目录一览: 1、html代码和JS代码有什么区别 2、如何在html中调用js函数 3、JavaScript学习笔记之数组基本操作示例 4、HTML5初学者笔记 5、《web前端笔记7》js字符—

2023-12-08
印象笔记记录java学习(Java成长笔记)

2022-11-12
javascript简要笔记,JavaScript读书笔记

2022-11-17
java笔记,大学java笔记

2022-11-28
JS请求接口详解

2023-05-19
java笔记,尚硅谷java笔记

2022-12-01
Mac笔记:在日常生活中高效实用的笔记工具

2023-05-18
java包笔记,Java语言包

2022-11-18
java客户端学习笔记(java开发笔记)

2022-11-14
为知笔记私有化部署

2023-05-21
jsp程序开发学习笔记2,jsp程序设计题库

本文目录一览: 1、《JSP&Servlet学习笔记》pdf下载在线阅读,求百度网盘云资源 2、林信良编著jsp&servlet学习笔记第2版课后答案吗 3、jsp有没有快速掌握的办法呀? 4、要学J

2023-12-08
uniapp调试js,uniapp调试工具

2022-11-24
数据库的笔记mysql,数据库管理系统笔记

2022-11-24